From ab6ecb6e51cf8feafcdffd6b558077a004c838b9 Mon Sep 17 00:00:00 2001 From: 0xfourzerofour Date: Wed, 25 Oct 2023 16:11:35 -0400 Subject: [PATCH] chore(docker): remove need for foundry in cicd --- Cross.toml | 7 +- Dockerfile | 5 - Makefile | 5 + crates/types/.gitignore | 2 - crates/types/build.rs | 14 - .../contracts/call_gas_estimation_proxy.rs | 577 ++++ crates/types/src/contracts/entry_point.rs | 2354 +++++++++++++++++ .../types/src/contracts/gas_price_oracle.rs | 716 +++++ crates/types/src/contracts/get_code_hashes.rs | 219 ++ crates/types/src/contracts/get_gas_used.rs | 262 ++ crates/types/src/contracts/i_aggregator.rs | 356 +++ crates/types/src/contracts/i_entry_point.rs | 1935 ++++++++++++++ crates/types/src/contracts/mod.rs | 17 + crates/types/src/contracts/node_interface.rs | 886 +++++++ crates/types/src/contracts/shared_types.rs | 58 + crates/types/src/contracts/simple_account.rs | 1234 +++++++++ .../src/contracts/simple_account_factory.rs | 382 +++ .../src/contracts/verifying_paymaster.rs | 1239 +++++++++ 18 files changed, 10241 insertions(+), 27 deletions(-) delete mode 100644 crates/types/.gitignore create mode 100644 crates/types/src/contracts/call_gas_estimation_proxy.rs create mode 100644 crates/types/src/contracts/entry_point.rs create mode 100644 crates/types/src/contracts/gas_price_oracle.rs create mode 100644 crates/types/src/contracts/get_code_hashes.rs create mode 100644 crates/types/src/contracts/get_gas_used.rs create mode 100644 crates/types/src/contracts/i_aggregator.rs create mode 100644 crates/types/src/contracts/i_entry_point.rs create mode 100644 crates/types/src/contracts/mod.rs create mode 100644 crates/types/src/contracts/node_interface.rs create mode 100644 crates/types/src/contracts/shared_types.rs create mode 100644 crates/types/src/contracts/simple_account.rs create mode 100644 crates/types/src/contracts/simple_account_factory.rs create mode 100644 crates/types/src/contracts/verifying_paymaster.rs diff --git a/Cross.toml b/Cross.toml index b3b473199..96d5bae27 100644 --- a/Cross.toml +++ b/Cross.toml @@ -5,10 +5,5 @@ pre-build = [ "mkdir -p /etc/apt/keyrings", "curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg", "echo 'deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main' | tee /etc/apt/sources.list.d/nodesource.list", - "apt-get update && apt-get -y upgrade && apt-get install -y libclang-dev pkg-config protobuf-compiler nodejs yarn", - "curl -L https://foundry.paradigm.xyz | bash", - ". /root/.bashrc", - "foundryup --version nightly" - # "chmod 755 /usr/bin/protoc", - # "chmod 755 /root/.foundry/bin/forge" + "apt-get update && apt-get -y upgrade && apt-get install -y libclang-dev pkg-config protobuf-compiler nodejs yarn" ] \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index d02b40be2..9143b2da9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,11 +10,6 @@ RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg - RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list RUN apt-get update && apt-get -y upgrade && apt-get install -y libclang-dev pkg-config protobuf-compiler nodejs yarn rsync -SHELL ["/bin/bash", "-c"] -RUN curl -L https://foundry.paradigm.xyz | bash -ENV PATH="/root/.foundry/bin:${PATH}" -RUN foundryup - RUN cargo install cargo-chef --locked WORKDIR /app diff --git a/Makefile b/Makefile index 051eac98c..6490d4526 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,11 @@ build-%: docker-build-latest: ## Build and push a cross-arch Docker image tagged with the latest git tag and `latest`. $(call build_docker_image,$(GIT_TAG),latest) + +.PHONY: generate-contracts +generate-contracts: + forge build --root ./crates/types/contracts + # Create a cross-arch Docker image with the given tags and push it define build_docker_image $(MAKE) build-aarch64-unknown-linux-gnu diff --git a/crates/types/.gitignore b/crates/types/.gitignore deleted file mode 100644 index 1eb781682..000000000 --- a/crates/types/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Generated code -/src/contracts diff --git a/crates/types/build.rs b/crates/types/build.rs index 673efd364..43253f60c 100644 --- a/crates/types/build.rs +++ b/crates/types/build.rs @@ -25,7 +25,6 @@ fn main() -> Result<(), Box> { } fn generate_contract_bindings() -> Result<(), Box> { - generate_abis()?; MultiAbigen::from_abigens([ abigen_of("IEntryPoint")?, abigen_of("EntryPoint")?, @@ -51,17 +50,6 @@ fn abigen_of(contract: &str) -> Result> { )?) } -fn generate_abis() -> Result<(), Box> { - run_command( - Command::new("forge") - .arg("build") - .arg("--root") - .arg("./contracts"), - "https://getfoundry.sh/", - "generate ABIs", - ) -} - fn update_submodules() -> Result<(), Box> { run_command( Command::new("git").arg("submodule").arg("update"), @@ -78,7 +66,6 @@ fn run_command( let output = match command.output() { Ok(o) => o, Err(e) => { - println!("{:?}", e); if let ErrorKind::NotFound = e.kind() { let program = command.get_program().to_str().unwrap(); Err(format!( @@ -89,7 +76,6 @@ fn run_command( } }; if !output.status.success() { - println!("{:?}", output); if let Ok(error_output) = String::from_utf8(output.stderr) { eprintln!("{error_output}"); } diff --git a/crates/types/src/contracts/call_gas_estimation_proxy.rs b/crates/types/src/contracts/call_gas_estimation_proxy.rs new file mode 100644 index 000000000..9fc5d0405 --- /dev/null +++ b/crates/types/src/contracts/call_gas_estimation_proxy.rs @@ -0,0 +1,577 @@ +pub use call_gas_estimation_proxy::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod call_gas_estimation_proxy { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("_innerCall"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("_innerCall"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("callData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("gas"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("estimateCallGas"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("estimateCallGas"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("args"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct CallGasEstimationProxy.EstimateCallGasArgs")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("EstimateCallGasContinuation"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("EstimateCallGasContinuation"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("minGas"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("maxGas"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("numRounds"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("EstimateCallGasResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("EstimateCallGasResult"), inputs + : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("gasEstimate"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("numRounds"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("EstimateCallGasRevertAtMax"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("EstimateCallGasRevertAtMax"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("revertData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_InnerCallResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("_InnerCallResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("success"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("gasUsed"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("revertData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], } + ], + ), + ]), + receive: true, + fallback: true, + } + } + ///The parsed JSON ABI of the contract. + pub static CALLGASESTIMATIONPROXY_ABI: ::ethers::contract::Lazy< + ::ethers::core::abi::Abi, + > = ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\t\x87\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0-W`\x005`\xE0\x1C\x80c\x153\xA8\xC3\x14a\0DW\x80c\xAE\x03\xE4F\x14a\0dWa\0a\x01\tV[``\x91P[P\x91P\x91P`\0Za\x01\x1B\x90\x85a\x06RV[\x90P`\0\x83a\x01*W\x82a\x01;V[`@Q\x80` \x01`@R\x80`\0\x81RP[\x90P\x83\x82\x82`@Qc\xF9\xBBA\xFB`\xE0\x1B\x81R`\x04\x01a\x01\\\x93\x92\x91\x90a\x06\xB5V[`@Q\x80\x91\x03\x90\xFD[30\x14a\x01qW`\0\x80\xFD[`\0a\x01\x85`\x80\x83\x015`@\x84\x015a\x06\xDFV[\x90P`\0a\x01\x9B``\x84\x015`\x80\x85\x015a\x03\x98V[\x90P\x80`\0a\x01\xB0`\xC0\x86\x01`\xA0\x87\x01a\x07\x12V[a\x02)W`\0\x80\x80a\x01\xDFa\x01\xC8` \x8A\x01\x8Aa\x07/V[a\x01\xD5` \x8B\x01\x8Ba\x07JV[\x8B``\x015a\x03\xD2V[\x92P\x92P\x92P\x82a\x02\x05W\x80`@Qc,\xF9\x19\xE9`\xE1\x1B\x81R`\x04\x01a\x01\\\x91\x90a\x07\x98V[`\x80\x88\x015a\x02\x15\x83`\x02a\x07\xABV[a\x02\x1F\x91\x90a\x06\xDFV[\x93PPPPa\x027V[a\x024\x84\x84\x84a\x04\xBEV[\x90P[`\0[\x83a\x02F\x86`\x01a\x07\xC2V[\x10\x15a\x034W\x80a\x02V\x81a\x07\xD5V[\x91P`\0\x90Pa\x02j`\x80\x88\x015\x84a\x07\xABV[\x90Pa\x02u\x81a\x05\x07V[a\x02\xC8W`\0a\x02\x89`\x80\x89\x015\x88a\x07\xABV[\x90P`\0a\x02\x9B`\x80\x8A\x015\x88a\x07\xABV[`@Qc\x11g\xCAs`\xE1\x1B\x81R`\x04\x81\x01\x84\x90R`$\x81\x01\x82\x90R`D\x81\x01\x86\x90R\x90\x91P`d\x01a\x01\\V[`\0\x80a\x02\xEEa\x02\xDB` \x8B\x01\x8Ba\x07/V[a\x02\xE8` \x8C\x01\x8Ca\x07JV[\x86a\x03\xD2V[P\x91P\x91P\x81\x15a\x03\x1BWa\x03\x11a\x03\n\x82`\x80\x8C\x015a\x03\x98V[\x87\x90a\x056V[\x95P\x84\x96Pa\x03\x1FV[\x84\x97P[a\x03*\x88\x88\x88a\x04\xBEV[\x94PPPPa\x02:V[a\x03Pa\x03E`\x80\x88\x015\x86a\x07\xABV[``\x88\x015\x90a\x056V[`@QcFA\xACM`\xE1\x1B\x81R`\x04\x81\x01\x91\x90\x91R`$\x81\x01\x82\x90R`D\x01a\x01\\V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03\x93W=`\0\xF3[=`\0\xFD[`\0\x82\x15a\x03\xC6W\x81a\x03\xAC`\x01\x85a\x06RV[a\x03\xB6\x91\x90a\x06\xDFV[a\x03\xC1\x90`\x01a\x07\xC2V[a\x03\xC9V[`\0[\x90P[\x92\x91PPV[`@Qc\x153\xA8\xC3`\xE0\x1B\x81R`\0\x90\x81\x90``\x900\x90c\x153\xA8\xC3\x90a\x04\x03\x90\x8A\x90\x8A\x90\x8A\x90\x8A\x90`\x04\x01a\x07\xEEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\x1DW`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x04.WP`\x01[a\x04\xAFW=\x80\x80\x15a\x04\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04aV[``\x91P[Pc\xF9\xBBA\xFB`\xE0\x1Ba\x04s\x82a\x088V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x04\x87W`\0\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x04\xA1\x91\x90a\x08\x85V[\x91\x95P\x93P\x91Pa\x04\xB4\x90PV[`\0\x80\xFD[\x94P\x94P\x94\x91PPV[`\0\x80`\x02a\x04\xCD\x85\x87a\x07\xC2V[a\x04\xD7\x91\x90a\x06\xDFV[\x90P\x84\x83\x11a\x04\xE7W\x90Pa\x05\0V[a\x04\xFCa\x04\xF5\x84`\x02a\x07\xABV[\x82\x90a\x056V[\x91PP[\x93\x92PPPV[`\0Za\x0F\x81a\x05\x19\x84a\x10\0a\x07\xABV[a\x05#\x91\x90a\x06\xDFV[a\x05/\x90a\xC3Pa\x07\xC2V[\x10\x92\x91PPV[`\0\x81\x83\x10a\x05EW\x81a\x03\xC9V[P\x90\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05cW`\0\x80\xFD[\x91\x90PV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x05~W`\0\x80\xFD[a\x05\x87\x85a\x05LV[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xA4W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x05\xB8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\xC7W`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x05\xD9W`\0\x80\xFD[\x95\x98` \x92\x90\x92\x01\x97P\x94\x95`@\x015\x94P\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x06\x03W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x1AW`\0\x80\xFD[\x82\x01`\xC0\x81\x85\x03\x12\x15a\x05\0W`\0\x80\xFD[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03\xCCWa\x03\xCCa\x06a\x01\tV[``\x91P[P\x91P\x91P`\0Za\x01\x1B\x90\x85a\x06RV[\x90P`\0\x83a\x01*W\x82a\x01;V[`@Q\x80` \x01`@R\x80`\0\x81RP[\x90P\x83\x82\x82`@Qc\xF9\xBBA\xFB`\xE0\x1B\x81R`\x04\x01a\x01\\\x93\x92\x91\x90a\x06\xB5V[`@Q\x80\x91\x03\x90\xFD[30\x14a\x01qW`\0\x80\xFD[`\0a\x01\x85`\x80\x83\x015`@\x84\x015a\x06\xDFV[\x90P`\0a\x01\x9B``\x84\x015`\x80\x85\x015a\x03\x98V[\x90P\x80`\0a\x01\xB0`\xC0\x86\x01`\xA0\x87\x01a\x07\x12V[a\x02)W`\0\x80\x80a\x01\xDFa\x01\xC8` \x8A\x01\x8Aa\x07/V[a\x01\xD5` \x8B\x01\x8Ba\x07JV[\x8B``\x015a\x03\xD2V[\x92P\x92P\x92P\x82a\x02\x05W\x80`@Qc,\xF9\x19\xE9`\xE1\x1B\x81R`\x04\x01a\x01\\\x91\x90a\x07\x98V[`\x80\x88\x015a\x02\x15\x83`\x02a\x07\xABV[a\x02\x1F\x91\x90a\x06\xDFV[\x93PPPPa\x027V[a\x024\x84\x84\x84a\x04\xBEV[\x90P[`\0[\x83a\x02F\x86`\x01a\x07\xC2V[\x10\x15a\x034W\x80a\x02V\x81a\x07\xD5V[\x91P`\0\x90Pa\x02j`\x80\x88\x015\x84a\x07\xABV[\x90Pa\x02u\x81a\x05\x07V[a\x02\xC8W`\0a\x02\x89`\x80\x89\x015\x88a\x07\xABV[\x90P`\0a\x02\x9B`\x80\x8A\x015\x88a\x07\xABV[`@Qc\x11g\xCAs`\xE1\x1B\x81R`\x04\x81\x01\x84\x90R`$\x81\x01\x82\x90R`D\x81\x01\x86\x90R\x90\x91P`d\x01a\x01\\V[`\0\x80a\x02\xEEa\x02\xDB` \x8B\x01\x8Ba\x07/V[a\x02\xE8` \x8C\x01\x8Ca\x07JV[\x86a\x03\xD2V[P\x91P\x91P\x81\x15a\x03\x1BWa\x03\x11a\x03\n\x82`\x80\x8C\x015a\x03\x98V[\x87\x90a\x056V[\x95P\x84\x96Pa\x03\x1FV[\x84\x97P[a\x03*\x88\x88\x88a\x04\xBEV[\x94PPPPa\x02:V[a\x03Pa\x03E`\x80\x88\x015\x86a\x07\xABV[``\x88\x015\x90a\x056V[`@QcFA\xACM`\xE1\x1B\x81R`\x04\x81\x01\x91\x90\x91R`$\x81\x01\x82\x90R`D\x01a\x01\\V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03\x93W=`\0\xF3[=`\0\xFD[`\0\x82\x15a\x03\xC6W\x81a\x03\xAC`\x01\x85a\x06RV[a\x03\xB6\x91\x90a\x06\xDFV[a\x03\xC1\x90`\x01a\x07\xC2V[a\x03\xC9V[`\0[\x90P[\x92\x91PPV[`@Qc\x153\xA8\xC3`\xE0\x1B\x81R`\0\x90\x81\x90``\x900\x90c\x153\xA8\xC3\x90a\x04\x03\x90\x8A\x90\x8A\x90\x8A\x90\x8A\x90`\x04\x01a\x07\xEEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\x1DW`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x04.WP`\x01[a\x04\xAFW=\x80\x80\x15a\x04\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04aV[``\x91P[Pc\xF9\xBBA\xFB`\xE0\x1Ba\x04s\x82a\x088V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x04\x87W`\0\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x04\xA1\x91\x90a\x08\x85V[\x91\x95P\x93P\x91Pa\x04\xB4\x90PV[`\0\x80\xFD[\x94P\x94P\x94\x91PPV[`\0\x80`\x02a\x04\xCD\x85\x87a\x07\xC2V[a\x04\xD7\x91\x90a\x06\xDFV[\x90P\x84\x83\x11a\x04\xE7W\x90Pa\x05\0V[a\x04\xFCa\x04\xF5\x84`\x02a\x07\xABV[\x82\x90a\x056V[\x91PP[\x93\x92PPPV[`\0Za\x0F\x81a\x05\x19\x84a\x10\0a\x07\xABV[a\x05#\x91\x90a\x06\xDFV[a\x05/\x90a\xC3Pa\x07\xC2V[\x10\x92\x91PPV[`\0\x81\x83\x10a\x05EW\x81a\x03\xC9V[P\x90\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05cW`\0\x80\xFD[\x91\x90PV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x05~W`\0\x80\xFD[a\x05\x87\x85a\x05LV[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xA4W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x05\xB8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\xC7W`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x05\xD9W`\0\x80\xFD[\x95\x98` \x92\x90\x92\x01\x97P\x94\x95`@\x015\x94P\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x06\x03W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x1AW`\0\x80\xFD[\x82\x01`\xC0\x81\x85\x03\x12\x15a\x05\0W`\0\x80\xFD[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03\xCCWa\x03\xCCa\x06(::ethers::contract::Contract); + impl ::core::clone::Clone for CallGasEstimationProxy { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for CallGasEstimationProxy { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for CallGasEstimationProxy { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for CallGasEstimationProxy { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(CallGasEstimationProxy)) + .field(&self.address()) + .finish() + } + } + impl CallGasEstimationProxy { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + CALLGASESTIMATIONPROXY_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + CALLGASESTIMATIONPROXY_ABI.clone(), + CALLGASESTIMATIONPROXY_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `_innerCall` (0x1533a8c3) function + pub fn inner_call( + &self, + sender: ::ethers::core::types::Address, + call_data: ::ethers::core::types::Bytes, + gas: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([21, 51, 168, 195], (sender, call_data, gas)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `estimateCallGas` (0xae03e446) function + pub fn estimate_call_gas( + &self, + args: EstimateCallGasArgs, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([174, 3, 228, 70], (args,)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for CallGasEstimationProxy { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `EstimateCallGasContinuation` with signature `EstimateCallGasContinuation(uint256,uint256,uint256)` and selector `0x22cf94e6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "EstimateCallGasContinuation", + abi = "EstimateCallGasContinuation(uint256,uint256,uint256)" + )] + pub struct EstimateCallGasContinuation { + pub min_gas: ::ethers::core::types::U256, + pub max_gas: ::ethers::core::types::U256, + pub num_rounds: ::ethers::core::types::U256, + } + ///Custom Error type `EstimateCallGasResult` with signature `EstimateCallGasResult(uint256,uint256)` and selector `0x8c83589a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "EstimateCallGasResult", + abi = "EstimateCallGasResult(uint256,uint256)" + )] + pub struct EstimateCallGasResult { + pub gas_estimate: ::ethers::core::types::U256, + pub num_rounds: ::ethers::core::types::U256, + } + ///Custom Error type `EstimateCallGasRevertAtMax` with signature `EstimateCallGasRevertAtMax(bytes)` and selector `0x59f233d2` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "EstimateCallGasRevertAtMax", + abi = "EstimateCallGasRevertAtMax(bytes)" + )] + pub struct EstimateCallGasRevertAtMax { + pub revert_data: ::ethers::core::types::Bytes, + } + ///Custom Error type `_InnerCallResult` with signature `_InnerCallResult(bool,uint256,bytes)` and selector `0xf9bb41fb` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "_InnerCallResult", abi = "_InnerCallResult(bool,uint256,bytes)")] + pub struct _InnerCallResult { + pub success: bool, + pub gas_used: ::ethers::core::types::U256, + pub revert_data: ::ethers::core::types::Bytes, + } + ///Container type for all of the contract's custom errors + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum CallGasEstimationProxyErrors { + EstimateCallGasContinuation(EstimateCallGasContinuation), + EstimateCallGasResult(EstimateCallGasResult), + EstimateCallGasRevertAtMax(EstimateCallGasRevertAtMax), + _InnerCallResult(_InnerCallResult), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for CallGasEstimationProxyErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( + data, + ) { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::EstimateCallGasContinuation(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::EstimateCallGasResult(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::EstimateCallGasRevertAtMax(decoded)); + } + if let Ok(decoded) + = <_InnerCallResult as ::ethers::core::abi::AbiDecode>::decode(data) { + return Ok(Self::_InnerCallResult(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for CallGasEstimationProxyErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::EstimateCallGasContinuation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::EstimateCallGasResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::EstimateCallGasRevertAtMax(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::_InnerCallResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for CallGasEstimationProxyErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == <_InnerCallResult as ::ethers::contract::EthError>::selector() => { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for CallGasEstimationProxyErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::EstimateCallGasContinuation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::EstimateCallGasResult(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::EstimateCallGasRevertAtMax(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::_InnerCallResult(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for CallGasEstimationProxyErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From + for CallGasEstimationProxyErrors { + fn from(value: EstimateCallGasContinuation) -> Self { + Self::EstimateCallGasContinuation(value) + } + } + impl ::core::convert::From for CallGasEstimationProxyErrors { + fn from(value: EstimateCallGasResult) -> Self { + Self::EstimateCallGasResult(value) + } + } + impl ::core::convert::From + for CallGasEstimationProxyErrors { + fn from(value: EstimateCallGasRevertAtMax) -> Self { + Self::EstimateCallGasRevertAtMax(value) + } + } + impl ::core::convert::From<_InnerCallResult> for CallGasEstimationProxyErrors { + fn from(value: _InnerCallResult) -> Self { + Self::_InnerCallResult(value) + } + } + ///Container type for all input parameters for the `_innerCall` function with signature `_innerCall(address,bytes,uint256)` and selector `0x1533a8c3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_innerCall", abi = "_innerCall(address,bytes,uint256)")] + pub struct InnerCallCall { + pub sender: ::ethers::core::types::Address, + pub call_data: ::ethers::core::types::Bytes, + pub gas: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `estimateCallGas` function with signature `estimateCallGas((address,bytes,uint256,uint256,uint256,bool))` and selector `0xae03e446` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "estimateCallGas", + abi = "estimateCallGas((address,bytes,uint256,uint256,uint256,bool))" + )] + pub struct EstimateCallGasCall { + pub args: EstimateCallGasArgs, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum CallGasEstimationProxyCalls { + InnerCall(InnerCallCall), + EstimateCallGas(EstimateCallGasCall), + } + impl ::ethers::core::abi::AbiDecode for CallGasEstimationProxyCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::InnerCall(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::EstimateCallGas(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for CallGasEstimationProxyCalls { + fn encode(self) -> Vec { + match self { + Self::InnerCall(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::EstimateCallGas(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for CallGasEstimationProxyCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InnerCall(element) => ::core::fmt::Display::fmt(element, f), + Self::EstimateCallGas(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for CallGasEstimationProxyCalls { + fn from(value: InnerCallCall) -> Self { + Self::InnerCall(value) + } + } + impl ::core::convert::From for CallGasEstimationProxyCalls { + fn from(value: EstimateCallGasCall) -> Self { + Self::EstimateCallGas(value) + } + } + ///`EstimateCallGasArgs(address,bytes,uint256,uint256,uint256,bool)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct EstimateCallGasArgs { + pub sender: ::ethers::core::types::Address, + pub call_data: ::ethers::core::types::Bytes, + pub min_gas: ::ethers::core::types::U256, + pub max_gas: ::ethers::core::types::U256, + pub rounding: ::ethers::core::types::U256, + pub is_continuation: bool, + } +} diff --git a/crates/types/src/contracts/entry_point.rs b/crates/types/src/contracts/entry_point.rs new file mode 100644 index 000000000..a6932db01 --- /dev/null +++ b/crates/types/src/contracts/entry_point.rs @@ -0,0 +1,2354 @@ +pub use entry_point::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod entry_point { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("SIG_VALIDATION_FAILED"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("SIG_VALIDATION_FAILED"), inputs + : ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_validateSenderAndPaymaster"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("_validateSenderAndPaymaster"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("initCode"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paymasterAndData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("addStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("addStake"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint32")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("balanceOf"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("depositTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("depositTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("deposits"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("deposits"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("deposit"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint112")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("staked"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("stake"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint112")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint32")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawTime"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getDepositInfo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getDepositInfo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("info"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.DepositInfo")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getSenderAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getSenderAddress"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("initCode"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getUserOpHash"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getUserOpHash"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("handleAggregatedOps"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("handleAggregatedOps"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("opsPerAggregator"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.UserOpsPerAggregator[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("beneficiary"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("handleOps"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("handleOps"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("ops"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("beneficiary"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("innerHandleOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("innerHandleOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("callData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("opInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct EntryPoint.UserOpInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("context"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("actualGasCost"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateHandleOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("simulateHandleOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("op"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("target"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("targetCallData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateValidation"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("simulateValidation"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("unlockStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("unlockStake"), inputs : + ::std::vec![], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawStake"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAmount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AccountDeployed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("AccountDeployed"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + indexed : true, }, ::ethers::core::abi::ethabi::EventParam { name + : ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("factory"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("paymaster"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Deposited"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("Deposited"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("totalDeposit"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignatureAggregatorChanged"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("SignatureAggregatorChanged"), + inputs : ::std::vec![::ethers::core::abi::ethabi::EventParam { + name : ::std::borrow::ToOwned::to_owned("aggregator"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeLocked"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("StakeLocked"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("totalStaked"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeUnlocked"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("StakeUnlocked"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("withdrawTime"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("UserOperationEvent"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("UserOperationEvent"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + indexed : true, }, ::ethers::core::abi::ethabi::EventParam { name + : ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("paymaster"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("nonce"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("success"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, indexed : false, }, + ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("actualGasCost"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("actualGasUsed"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("UserOperationRevertReason"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("UserOperationRevertReason"), + inputs : ::std::vec![::ethers::core::abi::ethabi::EventParam { + name : ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + indexed : true, }, ::ethers::core::abi::ethabi::EventParam { name + : ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("nonce"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("revertReason"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, indexed : false, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Withdrawn"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("Withdrawn"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("ExecutionResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("ExecutionResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("preOpGas"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paid"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validAfter"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validUntil"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("targetSuccess"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("targetResult"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("FailedOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("FailedOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("opIndex"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("reason"), kind : + ::ethers::core::abi::ethabi::ParamType::String, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("string")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SenderAddressResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("SenderAddressResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignatureValidationFailed"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("SignatureValidationFailed"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("aggregator"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidationResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("ValidationResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("returnInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.ReturnInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("senderInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("factoryInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paymasterInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidationResultWithAggregation"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("ValidationResultWithAggregation"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("returnInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.ReturnInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("senderInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("factoryInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paymasterInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("aggregatorInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)])]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.AggregatorStakeInfo")), + }], } + ], + ), + ]), + receive: true, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static ENTRYPOINT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA0`@R`@Qb\0\0\x12\x90b\0\0PV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\0/W=`\0\x80>=`\0\xFD[P`\x01`\x01`\xA0\x1B\x03\x16`\x80R4\x80\x15b\0\0IW`\0\x80\xFD[Pb\0\0^V[a\x02\x13\x80b\0\x85\x16\x81(\x98\xE1\x9B\xF2{p\x07\x1E\xBC\x8D\xC5,\x01\x90a\x07\xB4\x90\x84\x90\x87\x90\x91\x82Rc\xFF\xFF\xFF\xFF\x16` \x82\x01R`@\x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\0\x80Z\x90P30\x14a\x08\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FAA92 internal call only\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[\x84Q`@\x81\x01Q``\x82\x01Q\x81\x01a\x13\x88\x01Z\x10\x15a\x08@Wc\xDE\xAD\xDE\xAD`\xE0\x1B`\0R` `\0\xFD[\x87Q`\0\x90\x15a\x08\xD4W`\0a\x08]\x84`\0\x01Q`\0\x8C\x86a\x18\xC5V[\x90P\x80a\x08\xD2W`\0a\x08qa\x08\0a\x18\xDDV[\x80Q\x90\x91P\x15a\x08\xCCW\x84`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x8A` \x01Q\x7F\x1CO\xAD\xA77L\n\x9E\xE8\x84\x1F\xC3\x8A\xFE\x82\x93-\xC0\xF8\xE6\x90\x12\xE9'\xF0a\xA8\xBA\xE6\x11\xA2\x01\x87` \x01Q\x84`@Qa\x08\xC3\x92\x91\x90a3-V[`@Q\x80\x91\x03\x90\xA3[`\x01\x92PP[P[`\0\x88`\x80\x01QZ\x86\x03\x01\x90Pa\t&`\0\x83\x8B\x8B\x8B\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x88\x92Pa\x19\t\x91PPV[\x9A\x99PPPPPPPPPPV[\x81`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\tOWa\tOa-\xAFV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x88W\x81` \x01[a\tua,\xFFV[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\tmW\x90P[P\x90P`\0[\x82\x81\x10\x15a\n\x01W`\0\x82\x82\x81Q\x81\x10a\t\xAAWa\t\xAAa3FV[` \x02` \x01\x01Q\x90P`\0\x80a\t\xE5\x84\x8A\x8A\x87\x81\x81\x10a\t\xCDWa\t\xCDa3FV[\x90P` \x02\x81\x01\x90a\t\xDF\x91\x90a3\\V[\x85a\x1C\0V[\x91P\x91Pa\t\xF6\x84\x83\x83`\0a\x1D\x82V[PPP`\x01\x01a\t\x8EV[P`\0\x80[\x83\x81\x10\x15a\naWa\nU\x81\x88\x88\x84\x81\x81\x10a\n$Wa\n$a3FV[\x90P` \x02\x81\x01\x90a\n6\x91\x90a3\\V[\x85\x84\x81Q\x81\x10a\nHWa\nHa3FV[` \x02` \x01\x01Qa\x1F\x1EV[\x90\x91\x01\x90`\x01\x01a\n\x06V[Pa\nl\x84\x82a EV[PPPPPPV[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`\x01`p\x1B\x03\x16\x82\x11\x15a\n\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FWithdraw amount too large\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[\x80Ta\n\xF3\x90\x83\x90`\x01`\x01`p\x1B\x03\x16a3}V[\x81T`\x01`\x01`p\x1B\x03\x19\x16`\x01`\x01`p\x1B\x03\x91\x90\x91\x16\x17\x81U`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R` \x81\x01\x84\x90R3\x91\x7F\xD1\xC1\x9F\xBC\xD4U\x1A^\xDF\xB6mC\xD2\xE37\xC0H7\xAF\xDA4\x82\xB4+\xDFV\x9A\x8F\xCC\xDA\xE5\xFB\x91\x01`@Q\x80\x91\x03\x90\xA2`\0\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0B\x9FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0B\xA4V[``\x91P[PP\x90P\x80a\x0B\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rqfailed to withdraw`p\x1B`D\x82\x01R`d\x01a\x05\x90V[PPPPV[\x81`\0\x80[\x82\x81\x10\x15a\rdW6\x86\x86\x83\x81\x81\x10a\x0C\x10Wa\x0C\x10a3FV[\x90P` \x02\x81\x01\x90a\x0C\"\x91\x90a3\x90V[\x90P6`\0a\x0C1\x83\x80a3\xA6V[\x90\x92P\x90P`\0a\x0CH`@\x85\x01` \x86\x01a1$V[\x90P`\0\x19`\x01`\x01`\xA0\x1B\x03\x82\x16\x01a\x0C\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FAA96 invalid aggregator\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\rAW`\x01`\x01`\xA0\x1B\x03\x81\x16c\xE3V:O\x84\x84a\x0C\xD1`@\x89\x01\x89a3\xEFV[`@Q\x85c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\xF0\x94\x93\x92\x91\x90a5\x9AV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\r\x08W`\0\x80\xFD[PZ\xFA\x92PPP\x80\x15a\r\x19WP`\x01[a\rAW`@Qc\x08j\x9Fu`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\x90V[a\rK\x82\x87a2\xCAV[\x95PPPPP\x80\x80a\r\\\x90a6\x17V[\x91PPa\x0B\xF5V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\x7FWa\r\x7Fa-\xAFV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xB8W\x81` \x01[a\r\xA5a,\xFFV[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\r\x9DW\x90P[P\x90P`\0\x80[\x84\x81\x10\x15a\x0E\xA3W6\x88\x88\x83\x81\x81\x10a\r\xDAWa\r\xDAa3FV[\x90P` \x02\x81\x01\x90a\r\xEC\x91\x90a3\x90V[\x90P6`\0a\r\xFB\x83\x80a3\xA6V[\x90\x92P\x90P`\0a\x0E\x12`@\x85\x01` \x86\x01a1$V[\x90P\x81`\0[\x81\x81\x10\x15a\x0E\x8AW`\0\x89\x89\x81Q\x81\x10a\x0E4Wa\x0E4a3FV[` \x02` \x01\x01Q\x90P`\0\x80a\x0EW\x8B\x89\x89\x87\x81\x81\x10a\t\xCDWa\t\xCDa3FV[\x91P\x91Pa\x0Eg\x84\x83\x83\x89a\x1D\x82V[\x8Aa\x0Eq\x81a6\x17V[\x9BPPPPP\x80\x80a\x0E\x82\x90a6\x17V[\x91PPa\x0E\x18V[PPPPPP\x80\x80a\x0E\x9B\x90a6\x17V[\x91PPa\r\xBFV[P`\0\x80\x91P`\0[\x85\x81\x10\x15a\x0F\xBCW6\x89\x89\x83\x81\x81\x10a\x0E\xC7Wa\x0E\xC7a3FV[\x90P` \x02\x81\x01\x90a\x0E\xD9\x91\x90a3\x90V[\x90Pa\x0E\xEB`@\x82\x01` \x83\x01a1$V[`\x01`\x01`\xA0\x1B\x03\x16\x7FW_\xF3\xAC\xAD\xD5\xAB4\x8F\xE1\x85^!~\x0F6x\xF8\xD7g\xD7IL\x9F\x9F\xEF\xBE\xE2\xE1|\xCAM`@Q`@Q\x80\x91\x03\x90\xA26`\0a\x0F-\x83\x80a3\xA6V[\x90\x92P\x90P\x80`\0[\x81\x81\x10\x15a\x0F\xA4Wa\x0Fx\x88\x85\x85\x84\x81\x81\x10a\x0FTWa\x0FTa3FV[\x90P` \x02\x81\x01\x90a\x0Ff\x91\x90a3\\V[\x8B\x8B\x81Q\x81\x10a\nHWa\nHa3FV[a\x0F\x82\x90\x88a2\xCAV[\x96P\x87a\x0F\x8E\x81a6\x17V[\x98PP\x80\x80a\x0F\x9C\x90a6\x17V[\x91PPa\x0F6V[PPPPP\x80\x80a\x0F\xB4\x90a6\x17V[\x91PPa\x0E\xACV[P`@Q`\0\x90\x7FW_\xF3\xAC\xAD\xD5\xAB4\x8F\xE1\x85^!~\x0F6x\xF8\xD7g\xD7IL\x9F\x9F\xEF\xBE\xE2\xE1|\xCAM\x90\x82\x90\xA2a\x0F\xF2\x86\x82a EV[PPPPPPPPV[\x83\x15\x80\x15a\x10\x12WP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15[\x15a\x10_W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FAA20 account not deployed\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x14\x81\x10a\x10\xD7W`\0a\x10v`\x14\x82\x84\x86a60V[a\x10\x7F\x91a6ZV[``\x1C\x90P\x80;`\0\x03a\x10\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FAA30 paymaster not deployed\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[P[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\0`$\x82\x01R`D\x01a\x05\x90V[`@Qc+\x87\r\x1B`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cW\x0E\x1A6\x90a\x11G\x90\x85\x90\x85\x90`\x04\x01a6\x8FV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8A\x91\x90a6\xA3V[`@Qc6S\xDC\x03`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x05\x90V[`\0a\x11\xBA\x82a!CV[`@\x80Q` \x81\x01\x92\x90\x92R0\x90\x82\x01RF``\x82\x01R`\x80\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[3`\0\x90\x81R` \x81\x90R`@\x81 `\x01\x81\x01T\x90\x91c\xFF\xFF\xFF\xFF\x90\x91\x16\x90\x03a\x12JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x1B\x9B\xDD\x08\x1C\xDD\x18Z\xD9Y`\xB2\x1B`D\x82\x01R`d\x01a\x05\x90V[\x80T`\x01`p\x1B\x90\x04`\xFF\x16a\x12\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x11`$\x82\x01Rpalready unstaking`x\x1B`D\x82\x01R`d\x01a\x05\x90V[`\x01\x81\x01T`\0\x90a\x12\xAE\x90c\xFF\xFF\xFF\xFF\x16Ba6\xC0V[`\x01\x83\x01\x80Ti\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16d\x01\0\0\0\0e\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x02\x91\x90\x91\x17\x90\x91U\x83T`\xFF`p\x1B\x19\x16\x84U`@Q\x90\x81R\x90\x91P3\x90\x7F\xFA\x9B<\x14\xCC\x82\\A,\x9E\xD8\x1B;\xA3e\xA5\xB4YC\x94\x03\xF1\x88)\xE5r\xEDS\xA4\x18\x0F\n\x90` \x01a\x05&V[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`x\x1B\x90\x04`\x01`\x01`p\x1B\x03\x16\x80a\x13\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsNo stake to withdraw``\x1B`D\x82\x01R`d\x01a\x05\x90V[`\x01\x82\x01Td\x01\0\0\0\0\x90\x04e\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fmust call unlockStake() first\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x01\x82\x01TBd\x01\0\0\0\0\x90\x91\x04e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x11\x15a\x14EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FStake withdrawal is not due\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x01\x82\x01\x80Ti\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U\x81T`\x01`x\x1B`\x01`\xE8\x1B\x03\x19\x16\x82U`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R` \x81\x01\x83\x90R3\x91\x7F\xB7\xC9\x18\xE0\xE2I\xF9\x99\xE9e\xCA\xFE\xB6\xC6d'\x1B?C\x17\xD2\x96F\x15\0\xE7\x1D\xA3\x9F\x0C\xBD\xA3\x91\x01`@Q\x80\x91\x03\x90\xA2`\0\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x14\xFCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x15\x01V[``\x91P[PP\x90P\x80a\x0B\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Ffailed to withdraw stake\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[a\x15Za,\xFFV[a\x15c\x85a!\\V[`\0\x80a\x15r`\0\x88\x85a\x1C\0V[\x91P\x91P`\0a\x15\x82\x83\x83a\"6V[\x90Pa\x15\x8DC`\0RV[`\0a\x15\x9B`\0\x8A\x87a\x1F\x1EV[\x90Pa\x15\xA6C`\0RV[`\0```\x01`\x01`\xA0\x1B\x03\x8A\x16\x15a\x16\x1CW\x89`\x01`\x01`\xA0\x1B\x03\x16\x89\x89`@Qa\x15\xD3\x92\x91\x90a6\xE6V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x16\x10W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\x15V[``\x91P[P\x90\x92P\x90P[\x86`\x80\x01Q\x83\x85` \x01Q\x86`@\x01Q\x85\x85`@Qc\x01\x16\xF5\x93`\xE7\x1B\x81R`\x04\x01a\x05\x90\x96\x95\x94\x93\x92\x91\x90a6\xF6V[a\x16Ua,\xFFV[a\x16^\x82a!\\V[`\0\x80a\x16m`\0\x85\x85a\x1C\0V[\x91P\x91P`\0a\x16\x84\x84`\0\x01Q`\xA0\x01Qa#\x03V[\x84QQ\x90\x91P`\0\x90a\x16\x96\x90a#\x03V[\x90Pa\x16\xB5`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[6`\0a\x16\xC5`@\x8A\x01\x8Aa3\xEFV[\x90\x92P\x90P`\0`\x14\x82\x10\x15a\x16\xDCW`\0a\x16\xF7V[a\x16\xEA`\x14`\0\x84\x86a60V[a\x16\xF3\x91a6ZV[``\x1C[\x90Pa\x17\x02\x81a#\x03V[\x93PPPP`\0a\x17\x13\x86\x86a\"6V[\x90P`\0\x81`\0\x01Q\x90P`\0`\x01`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x90P`\0`@Q\x80`\xC0\x01`@R\x80\x8B`\x80\x01Q\x81R` \x01\x8B`@\x01Q\x81R` \x01\x83\x15\x15\x81R` \x01\x85` \x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x85`@\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17\x90\x8C``\x01Q\x90V[\x90R\x90P`\x01`\x01`\xA0\x1B\x03\x83\x16\x15\x80\x15\x90a\x17\xB6WP`\x01`\x01`\xA0\x1B\x03\x83\x16`\x01\x14\x15[\x15a\x18\x08W`\0`@Q\x80`@\x01`@R\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01a\x17\xE0\x86a#\x03V[\x81RP\x90P\x81\x87\x87\x8A\x84`@Qc>\xBB-9`\xE2\x1B\x81R`\x04\x01a\x05\x90\x95\x94\x93\x92\x91\x90a7\x98V[\x80\x86\x86\x89`@Qc\xE0\xCF\xF0_`\xE0\x1B\x81R`\x04\x01a\x05\x90\x94\x93\x92\x91\x90a8\x18V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x90\x91\x90a\x18Z\x90\x84\x90`\x01`\x01`p\x1B\x03\x16a2\xCAV[\x90P`\x01`\x01`p\x1B\x03\x81\x11\x15a\x18\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Rodeposit overflow`\x80\x1B`D\x82\x01R`d\x01a\x05\x90V[\x81T`\x01`\x01`p\x1B\x03\x19\x16`\x01`\x01`p\x1B\x03\x91\x90\x91\x16\x17\x90UPPV[`\0\x80`\0\x84Q` \x86\x01\x87\x89\x87\xF1\x95\x94PPPPPV[``=\x82\x81\x11\x15a\x18\xEBWP\x81[`@Q` \x82\x01\x81\x01`@R\x81\x81R\x81`\0` \x83\x01>\x93\x92PPPV[`\0\x80Z\x85Q\x90\x91P`\0\x90\x81a\x19\x1F\x82a#RV[`\xA0\x83\x01Q\x90\x91P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19>W\x82Q\x93Pa\x1A\xE5V[\x80\x93P`\0\x88Q\x11\x15a\x1A\xE5W\x86\x82\x02\x95P`\x02\x8A`\x02\x81\x11\x15a\x19dWa\x19da8oV[\x14a\x19\xD6W``\x83\x01Q`@Qc\xA9\xA24\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA9\xA24\t\x91a\x19\x9E\x90\x8E\x90\x8D\x90\x8C\x90`\x04\x01a8\x85V[`\0`@Q\x80\x83\x03\x81`\0\x88\x80;\x15\x80\x15a\x19\xB8W`\0\x80\xFD[P\x87\xF1\x15\x80\x15a\x19\xCCW=`\0\x80>=`\0\xFD[PPPPPa\x1A\xE5V[``\x83\x01Q`@Qc\xA9\xA24\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA9\xA24\t\x91a\x1A\x0B\x90\x8E\x90\x8D\x90\x8C\x90`\x04\x01a8\x85V[`\0`@Q\x80\x83\x03\x81`\0\x88\x80;\x15\x80\x15a\x1A%W`\0\x80\xFD[P\x87\xF1\x93PPPP\x80\x15a\x1A7WP`\x01[a\x1A\xE5Wa\x1ACa8\xCCV[\x80c\x08\xC3y\xA0\x03a\x1A\x9CWPa\x1AWa8\xE8V[\x80a\x1AbWPa\x1A\x9EV[\x8B\x81`@Q` \x01a\x1At\x91\x90a9qV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\x11\x013[`\xE1\x1B\x82Ra\x05\x90\x92\x91`\x04\x01a3-V[P[\x8A`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x12\x90\x82\x01Rq\x10PML\x08\x1C\x1B\xDC\xDD\x13\xDC\x08\x1C\x99]\x99\\\x9D`r\x1B``\x82\x01R`\x80\x01\x90V[Z\x85\x03\x87\x01\x96P\x81\x87\x02\x95P\x85\x89`@\x01Q\x10\x15a\x1BNW\x8A`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x80\x83\x01\x82\x90R\x90\x82\x01R\x7FAA51 prefund below actualGasCost``\x82\x01R`\x80\x01\x90V[`@\x89\x01Q\x86\x90\x03a\x1B`\x85\x82a\x18)V[`\0\x80\x8C`\x02\x81\x11\x15a\x1BuWa\x1Bua8oV[\x14\x90P\x84`\xA0\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x85`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x8C` \x01Q\x7FIb\x8F\xD1G\x10\x06\xC1H-\xA8\x80(\xE9\xCEM\xBB\x08\x0B\x81\\\x9B\x03D\xD3\x9EZ\x8En\xC1A\x9F\x88` \x01Q\x85\x8D\x8F`@Qa\x1B\xE8\x94\x93\x92\x91\x90\x93\x84R\x91\x15\x15` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPPPP\x95\x94PPPPPV[`\0\x80`\0Z\x84Q\x90\x91Pa\x1C\x15\x86\x82a#\x82V[a\x1C\x1E\x86a\x11\xAFV[` \x86\x01R`@\x81\x01Q``\x82\x01Q`\x80\x83\x01Q\x17\x17`\xE0\x87\x015\x17a\x01\0\x87\x015\x17n\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1C\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FAA94 gas values overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\0\x80a\x1C\xAC\x84a${V[\x90Pa\x1C\xBA\x8A\x8A\x8A\x84a$\xC8V[\x97P\x91Pa\x1C\xC7C`\0RV[`\xA0\x84\x01Q``\x90`\x01`\x01`\xA0\x1B\x03\x16\x15a\x1C\xEFWa\x1C\xEA\x8B\x8B\x8B\x85\x87a'\0V[\x97P\x90P[`\0Z\x87\x03\x90P\x80\x8B`\xA0\x015\x10\x15a\x1DTW\x8B`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x1E\x90\x82\x01R\x7FAA40 over verificationGasLimit\0\0``\x82\x01R`\x80\x01\x90V[`@\x8A\x01\x83\x90R\x81``\x8B\x01R`\xC0\x8B\x015Z\x88\x03\x01\x8A`\x80\x01\x81\x81RPPPPPPPPP\x93P\x93\x91PPV[`\0\x80a\x1D\x8E\x85a)#V[\x91P\x91P\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1D\xF4W\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x14\x90\x82\x01Rs \xA0\x99\x1A\x109\xB4\xB3\xB70\xBA:\xB92\x902\xB997\xB9`a\x1B``\x82\x01R`\x80\x01\x90V[\x80\x15a\x1ELW\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x17\x90\x82\x01R\x7FAA22 expired or not due\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[`\0a\x1EW\x85a)#V[\x92P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x1E\xB3W\x86`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x14\x90\x82\x01Rs \xA0\x99\x9A\x109\xB4\xB3\xB70\xBA:\xB92\x902\xB997\xB9`a\x1B``\x82\x01R`\x80\x01\x90V[\x81\x15a\x1F\x15W\x86`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`!\x90\x82\x01R\x7FAA32 paymaster expired or not du``\x82\x01R`e`\xF8\x1B`\x80\x82\x01R`\xA0\x01\x90V[PPPPPPPV[`\0\x80Z\x90P`\0a\x1F1\x84``\x01Q\x90V[\x90P0c\x1Ds'Va\x1FF``\x88\x01\x88a3\xEFV[\x87\x85`@Q\x85c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1Fg\x94\x93\x92\x91\x90a9\xAFV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x92PPP\x80\x15a\x1F\xA2WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1F\x9F\x91\x81\x01\x90a:bV[`\x01[a 9W`\0` `\0\x80>P`\0Qc!R!S`\xE0\x1B\x81\x01a \x04W\x86`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x0F\x90\x82\x01RnAA95 out of gas`\x88\x1B``\x82\x01R`\x80\x01\x90V[`\0\x85`\x80\x01QZa \x16\x90\x86a3}V[a \x91\x90a2\xCAV[\x90Pa 0\x88`\x02\x88\x86\x85a\x19\tV[\x94PPPa a \xEDV[``\x91P[PP\x90P\x80a!>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FAA91 failed send to beneficiary\0`D\x82\x01R`d\x01a\x05\x90V[PPPV[`\0a!N\x82a)vV[\x80Q\x90` \x01 \x90P\x91\x90PV[0c\x95q\"\xABa!o`@\x84\x01\x84a3\xEFV[a!|` \x86\x01\x86a1$V[a!\x8Aa\x01 \x87\x01\x87a3\xEFV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a!\xAA\x95\x94\x93\x92\x91\x90a:{V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a!\xC2W`\0\x80\xFD[PZ\xFA\x92PPP\x80\x15a!\xD3WP`\x01[a\"3Wa!\xDFa8\xCCV[\x80c\x08\xC3y\xA0\x03a\"'WPa!\xF3a8\xE8V[\x80a!\xFEWPa\")V[\x80Q\x15a\"#W`\0\x81`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x92\x91\x90a3-V[PPV[P[=`\0\x80>=`\0\xFD[PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90a\"\\\x84a)\xB5V[\x90P`\0a\"i\x84a)\xB5V[\x82Q\x90\x91P`\x01`\x01`\xA0\x1B\x03\x81\x16a\"\x80WP\x80Q[` \x80\x84\x01Q`@\x80\x86\x01Q\x92\x85\x01Q\x90\x85\x01Q\x91\x92\x91e\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x90\x85\x16\x10\x15a\"\xAEW\x81\x93P[\x80e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x11\x15a\"\xCAW\x80\x92P[PP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16` \x85\x01R\x91\x16\x90\x82\x01R\x92PPP[\x92\x91PPV[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16\x82R\x81\x90R\x91\x90\x91 \x80T`\x01`x\x1B\x90\x04`\x01`\x01`p\x1B\x03\x16\x82R`\x01\x01Tc\xFF\xFF\xFF\xFF\x16\x90\x91R\x90V[`\xC0\x81\x01Q`\xE0\x82\x01Q`\0\x91\x90\x80\x82\x03a#nWP\x92\x91PPV[a#z\x82H\x83\x01a*&V[\x94\x93PPPPV[a#\x8F` \x83\x01\x83a1$V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x015\x90\x82\x01R`\x80\x80\x83\x015`@\x83\x01R`\xA0\x83\x015``\x83\x01R`\xC0\x80\x84\x015\x91\x83\x01\x91\x90\x91R`\xE0\x80\x84\x015\x91\x83\x01\x91\x90\x91Ra\x01\0\x83\x015\x90\x82\x01R6`\0a#\xEEa\x01 \x85\x01\x85a3\xEFV[\x90\x92P\x90P\x80\x15a$nW`\x14\x81\x10\x15a$JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAA93 invalid paymasterAndData\0\0\0`D\x82\x01R`d\x01a\x05\x90V[a$X`\x14`\0\x83\x85a60V[a$a\x91a6ZV[``\x1C`\xA0\x84\x01Ra\x0B\xEAV[`\0`\xA0\x84\x01RPPPPV[`\xA0\x81\x01Q`\0\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16a$\x99W`\x01a$\x9CV[`\x03[`\xFF\x16\x90P`\0\x83`\x80\x01Q\x82\x85``\x01Q\x02\x85`@\x01Q\x01\x01\x90P\x83`\xC0\x01Q\x81\x02\x92PPP\x91\x90PV[`\0\x80`\0Z\x85Q\x80Q\x91\x92P\x90a$\xED\x89\x88a$\xE8`@\x8C\x01\x8Ca3\xEFV[a*>V[`\xA0\x82\x01Qa$\xFBC`\0RV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a%CW`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T`\x01`\x01`p\x1B\x03\x16\x88\x81\x11a%`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x82\x91\x90\x81\x01\x90a;\rV[`\x01[a)\x0FWa(\x91a8\xCCV[\x80c\x08\xC3y\xA0\x03a(\xC2WPa(\xA5a8\xE8V[\x80a(\xB0WPa(\xC4V[\x8D\x81`@Q` \x01a\x1At\x91\x90a;\x98V[P[\x8C`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x16\x90\x82\x01RuAA33 reverted (or OOG)`P\x1B``\x82\x01R`\x80\x01\x90V[\x90\x9E\x90\x9DP\x9BPPPPPPPPPPPPV[`\0\x80\x82`\0\x03a)9WP`\0\x92\x83\x92P\x90PV[`\0a)D\x84a)\xB5V[\x90P\x80`@\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16B\x11\x80a)kWP\x80` \x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16B\x10[\x90Q\x94\x90\x93P\x91PPV[``6`\0a)\x89a\x01@\x85\x01\x85a3\xEFV[\x91P\x91P\x83` \x81\x84\x03\x03`@Q\x94P` \x81\x01\x85\x01`@R\x80\x85R\x80\x82` \x87\x017PPPP\x91\x90PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x81`\xA0\x81\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16`\0\x03a)\xF1WPe\xFF\xFF\xFF\xFF\xFF\xFF[`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xD0\x94\x90\x94\x1C` \x83\x01Re\xFF\xFF\xFF\xFF\xFF\xFF\x16\x92\x81\x01\x92\x90\x92RP\x90V[`\0\x81\x83\x10a*5W\x81a*7V[\x82[\x93\x92PPPV[\x80\x15a\x0B\xEAW\x82QQ`\x01`\x01`\xA0\x1B\x03\x81\x16;\x15a*\xA9W\x84`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x1F\x90\x82\x01R\x7FAA10 sender already constructed\0``\x82\x01R`\x80\x01\x90V[\x83Q``\x01Q`@Qc+\x87\r\x1B`\xE1\x1B\x81R`\0\x91`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x91cW\x0E\x1A6\x91\x90a+\x01\x90\x88\x90\x88\x90`\x04\x01a6\x8FV[` `@Q\x80\x83\x03\x81`\0\x88\x87\xF1\x15\x80\x15a+ W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+E\x91\x90a6\xA3V[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a+\xA7W\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x1B\x90\x82\x01R\x7FAA13 initCode failed or OOG\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14a,\x11W\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x80\x83\x01\x82\x90R\x90\x82\x01R\x7FAA14 initCode must return sender``\x82\x01R`\x80\x01\x90V[\x80`\x01`\x01`\xA0\x1B\x03\x16;`\0\x03a,tW\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x80\x83\x01\x82\x90R\x90\x82\x01R\x7FAA15 initCode must create sender``\x82\x01R`\x80\x01\x90V[`\0a,\x83`\x14\x82\x86\x88a60V[a,\x8C\x91a6ZV[``\x1C\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x86` \x01Q\x7F\xD5\x1A\x9Ca&z\xA6\x19ia\x88>\xCF_\xF2\xDAf\x19\xC3}\xAC\x0F\xA9!\"Q?\xB3,\x03--\x83\x89`\0\x01Q`\xA0\x01Q`@Qa,\xEE\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPPV[`@Q\x80`\xA0\x01`@R\x80a-d`@Q\x80a\x01\0\x01`@R\x80`\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01`\0\x80\x19\x16\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0` \x82\x84\x03\x12\x15a-\x9BW`\0\x80\xFD[\x815c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a*7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a-\xE4Wa-\xE4a-\xAFV[`@RPV[a\x01\0\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a-\xE4Wa-\xE4a-\xAFV[`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a./Wa./a-\xAFV[`@RPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a.OWa.Oa-\xAFV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\"3W`\0\x80\xFD[\x805a.}\x81a.]V[\x91\x90PV[`\0\x81\x83\x03a\x01\x80\x81\x12\x15a.\x96W`\0\x80\xFD[`@Qa.\xA2\x81a-\xC5V[\x80\x92Pa\x01\0\x80\x83\x12\x15a.\xB5W`\0\x80\xFD[`@Q\x92Pa.\xC3\x83a-\xEAV[a.\xCC\x85a.rV[\x83R` \x85\x015` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015`\x80\x84\x01Ra/\x02`\xA0\x86\x01a.rV[`\xA0\x84\x01R`\xC0\x85\x015`\xC0\x84\x01R`\xE0\x85\x015`\xE0\x84\x01R\x82\x82R\x80\x85\x015` \x83\x01RPa\x01 \x84\x015`@\x82\x01Ra\x01@\x84\x015``\x82\x01Ra\x01`\x84\x015`\x80\x82\x01RPP\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12a/cW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/zW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a/\x92W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80a\x01\xC0\x85\x87\x03\x12\x15a/\xB0W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a/\xC7W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a/\xDBW`\0\x80\xFD[\x815a/\xE6\x81a.6V[`@Qa/\xF3\x82\x82a.\nV[\x82\x81R\x8A` \x84\x87\x01\x01\x11\x15a0\x08W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x98PPPPa0.\x88` \x89\x01a.\x82V[\x94Pa\x01\xA0\x87\x015\x91P\x80\x82\x11\x15a0EW`\0\x80\xFD[Pa0R\x87\x82\x88\x01a/QV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0pW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x87W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x92W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xB7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xCDW`\0\x80\xFD[a0\xD9\x86\x82\x87\x01a0^V[\x90\x94P\x92PP` \x84\x015a0\xED\x81a.]V[\x80\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a1\x0BW`\0\x80\xFD[\x825a1\x16\x81a.]V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a16W`\0\x80\xFD[\x815a*7\x81a.]V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a1YW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a1pW`\0\x80\xFD[a1|\x89\x83\x8A\x01a/QV[\x90\x97P\x95P` \x88\x015\x91Pa1\x91\x82a.]V[\x90\x93P`@\x87\x015\x90\x80\x82\x11\x15a1\xA7W`\0\x80\xFD[Pa1\xB4\x88\x82\x89\x01a/QV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80` \x83\x85\x03\x12\x15a1\xD8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xEEW`\0\x80\xFD[a1\xFA\x85\x82\x86\x01a/QV[\x90\x96\x90\x95P\x93PPPPV[`\0a\x01`\x82\x84\x03\x12\x15a2\x19W`\0\x80\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a21W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2GW`\0\x80\xFD[a#z\x84\x82\x85\x01a2\x06V[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a2iW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a2\x80W`\0\x80\xFD[a2\x8C\x88\x83\x89\x01a2\x06V[\x95P` \x87\x015\x91Pa2\x9E\x82a.]V[\x90\x93P`@\x86\x015\x90\x80\x82\x11\x15a0EW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\xFDWa\"\xFDa2\xB4V[`\0[\x83\x81\x10\x15a2\xF8W\x81\x81\x01Q\x83\x82\x01R` \x01a2\xE0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra3\x19\x81` \x86\x01` \x86\x01a2\xDDV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a#z`@\x83\x01\x84a3\x01V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x825a\x01^\x19\x836\x03\x01\x81\x12a3sW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\"\xFDWa\"\xFDa2\xB4V[`\0\x825`^\x19\x836\x03\x01\x81\x12a3sW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a3\xBDW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a3\xD7W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a/\x92W`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a4\x06W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a4 W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a/\x92W`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a4LW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a4kW`\0\x80\xFD[\x806\x03\x82\x13\x15a/\x92W`\0\x80\xFD[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\0a\x01`a4\xC2\x84a4\xB5\x85a.rV[`\x01`\x01`\xA0\x1B\x03\x16\x90RV[` \x83\x015` \x85\x01Ra4\xD9`@\x84\x01\x84a45V[\x82`@\x87\x01Ra4\xEC\x83\x87\x01\x82\x84a4zV[\x92PPPa4\xFD``\x84\x01\x84a45V[\x85\x83\x03``\x87\x01Ra5\x10\x83\x82\x84a4zV[\x92PPP`\x80\x83\x015`\x80\x85\x01R`\xA0\x83\x015`\xA0\x85\x01R`\xC0\x83\x015`\xC0\x85\x01R`\xE0\x83\x015`\xE0\x85\x01Ra\x01\0\x80\x84\x015\x81\x86\x01RPa\x01 a5W\x81\x85\x01\x85a45V[\x86\x84\x03\x83\x88\x01Ra5i\x84\x82\x84a4zV[\x93PPPPa\x01@a5}\x81\x85\x01\x85a45V[\x86\x84\x03\x83\x88\x01Ra5\x8F\x84\x82\x84a4zV[\x97\x96PPPPPPPV[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a6\0W\x86\x85\x03`_\x19\x01\x84R\x8256\x8C\x90\x03a\x01^\x19\x01\x81\x12a5\xDEW\x82\x83\xFD[a5\xEA\x86\x8D\x83\x01a4\xA3V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a5\xB8V[PPPP\x82\x81\x03` \x84\x01Ra5\x8F\x81\x85\x87a4zV[`\0`\x01\x82\x01a6)Wa6)a2\xB4V[P`\x01\x01\x90V[`\0\x80\x85\x85\x11\x15a6@W`\0\x80\xFD[\x83\x86\x11\x15a6MW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x815\x81\x81\x16\x91`\x14\x85\x10\x15a6\x87W\x80\x81\x86`\x14\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV[` \x81R`\0a#z` \x83\x01\x84\x86a4zV[`\0` \x82\x84\x03\x12\x15a6\xB5W`\0\x80\xFD[\x81Qa*7\x81a.]V[e\xFF\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x80\x82\x11\x15a6\xDFWa6\xDFa2\xB4V[P\x92\x91PPV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[\x86\x81R\x85` \x82\x01R`\0e\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`@\x84\x01R\x80\x86\x16``\x84\x01RP\x83\x15\x15`\x80\x83\x01R`\xC0`\xA0\x83\x01Ra75`\xC0\x83\x01\x84a3\x01V[\x98\x97PPPPPPPPV[\x80Q\x82R` \x81\x01Q` \x83\x01R`@\x81\x01Q\x15\x15`@\x83\x01R`\0``\x82\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x16``\x86\x01R\x80`\x80\x85\x01Q\x16`\x80\x86\x01RPP`\xA0\x82\x01Q`\xC0`\xA0\x85\x01Ra#z`\xC0\x85\x01\x82a3\x01V[`\0a\x01@\x80\x83Ra7\xAC\x81\x84\x01\x89a7AV[\x91PPa7\xC6` \x83\x01\x87\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[\x84Q``\x83\x01R` \x94\x85\x01Q`\x80\x83\x01R\x83Q`\xA0\x83\x01R\x92\x84\x01Q`\xC0\x82\x01R\x81Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x82\x01R\x90\x83\x01Q\x80Qa\x01\0\x83\x01R\x90\x92\x01Qa\x01 \x90\x92\x01\x91\x90\x91R\x92\x91PPV[`\xE0\x81R`\0a8+`\xE0\x83\x01\x87a7AV[\x90Pa8D` \x83\x01\x86\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[\x83Q``\x83\x01R` \x84\x01Q`\x80\x83\x01R\x82Q`\xA0\x83\x01R` \x83\x01Q`\xC0\x83\x01R\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0`\x03\x85\x10a8\xA5WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x84\x82R``` \x83\x01Ra8\xBC``\x83\x01\x85a3\x01V[\x90P\x82`@\x83\x01R\x94\x93PPPPV[`\0`\x03=\x11\x15a8\xE5W`\x04`\0\x80>P`\0Q`\xE0\x1C[\x90V[`\0`D=\x10\x15a8\xF6W\x90V[`@Q`\x03\x19=\x81\x01`\x04\x83>\x81Q=`\x01`\x01`@\x1B\x03\x81`$\x84\x01\x11\x81\x84\x11\x17\x15a9%WPPPPP\x90V[\x82\x85\x01\x91P\x81Q\x81\x81\x11\x15a9=WPPPPPP\x90V[\x84=\x87\x01\x01` \x82\x85\x01\x01\x11\x15a9WWPPPPPP\x90V[a9f` \x82\x86\x01\x01\x87a.\nV[P\x90\x95\x94PPPPPV[u\x02\n\t\xA9\x81\x03\x83{\x9B\xA2{\x81\x03\x93+\xB3+\x93\xA3+!\xD1`U\x1B\x81R`\0\x82Qa9\xA2\x81`\x16\x85\x01` \x87\x01a2\xDDV[\x91\x90\x91\x01`\x16\x01\x92\x91PPV[`\0a\x01\xC0\x80\x83Ra9\xC4\x81\x84\x01\x87\x89a4zV[\x90P\x84Q`\x01\x80`\xA0\x1B\x03\x80\x82Q\x16` \x86\x01R` \x82\x01Q`@\x86\x01R`@\x82\x01Q``\x86\x01R``\x82\x01Q`\x80\x86\x01R`\x80\x82\x01Q`\xA0\x86\x01R\x80`\xA0\x83\x01Q\x16`\xC0\x86\x01RP`\xC0\x81\x01Q`\xE0\x85\x01R`\xE0\x81\x01Qa\x01\0\x85\x01RP` \x85\x01Qa\x01 \x84\x01R`@\x85\x01Qa\x01@\x84\x01R``\x85\x01Qa\x01`\x84\x01R`\x80\x85\x01Qa\x01\x80\x84\x01R\x82\x81\x03a\x01\xA0\x84\x01Ra5\x8F\x81\x85a3\x01V[`\0` \x82\x84\x03\x12\x15a:tW`\0\x80\xFD[PQ\x91\x90PV[``\x81R`\0a:\x8F``\x83\x01\x87\x89a4zV[`\x01`\x01`\xA0\x1B\x03\x86\x16` \x84\x01R\x82\x81\x03`@\x84\x01Ra75\x81\x85\x87a4zV[``\x81R`\0a:\xC4``\x83\x01\x86a4\xA3V[` \x83\x01\x94\x90\x94RP`@\x01R\x91\x90PV[n\x02\n\t\x91\x99\x03\x93+\xB3+\x93\xA3+!\xD1`\x8D\x1B\x81R`\0\x82Qa;\0\x81`\x0F\x85\x01` \x87\x01a2\xDDV[\x91\x90\x91\x01`\x0F\x01\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a; W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a;6W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a;GW`\0\x80\xFD[\x80Qa;R\x81a.6V[`@Qa;_\x82\x82a.\nV[\x82\x81R\x87` \x84\x86\x01\x01\x11\x15a;tW`\0\x80\xFD[a;\x85\x83` \x83\x01` \x87\x01a2\xDDV[` \x96\x90\x96\x01Q\x95\x97\x95\x96PPPPPPV[n\x02\n\t\x99\x99\x03\x93+\xB3+\x93\xA3+!\xD1`\x8D\x1B\x81R`\0\x82Qa;\0\x81`\x0F\x85\x01` \x87\x01a2\xDDV\xFE\xA2dipfsX\"\x12 b\xFDfw\xCAM\xBF\xAD\xAB\xEB\xC6\xC7\xA3\x0FX\xBD\xA5y\xC1`i'j\x16\xAB\xD3\x88\xEE\xF6\xA9\xB1\x84dsolcC\0\x08\x15\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\xF3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cW\x0E\x1A6\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\0\xECV[a\0_V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0\x80a\0o`\x14\x82\x85\x87a\x01^V[a\0x\x91a\x01\x88V[``\x1C\x90P`\0a\0\x8C\x84`\x14\x81\x88a\x01^V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x82\x90RP\x84Q\x94\x95P\x93` \x93P\x84\x92P\x90P\x82\x85\x01\x82\x87Z\xF1\x90P`\0Q\x93P\x80a\0\xE3W`\0\x93P[PPP\x92\x91PPV[`\0\x80` \x83\x85\x03\x12\x15a\0\xFFW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x17W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x01+W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01:W`\0\x80\xFD[\x86` \x82\x85\x01\x01\x11\x15a\x01LW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80\x85\x85\x11\x15a\x01nW`\0\x80\xFD[\x83\x86\x11\x15a\x01{W`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x815\x81\x81\x16\x91`\x14\x85\x10\x15a\x01\xB5W\x80\x81\x86`\x14\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xD5\xF2\n/$\xB4O\xD9\xDB\xC9m\xF5\x0B#\x9E\x80\xC1\x9A\xA9\x14Q\x8D\xDB\xF2\xEA8\x7F\xA1Q\xFA<\xC5dsolcC\0\x08\x15\x003"; + /// The bytecode of the contract. + pub static ENTRYPOINT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01\x02W`\x005`\xE0\x1C\x80c\x95q\"\xAB\x11a\0\x95W\x80c\xBB\x9F\xE6\xBF\x11a\0dW\x80c\xBB\x9F\xE6\xBF\x14a\x03\xA1W\x80c\xC2:\\\xEA\x14a\x03\xB6W\x80c\xD68?\x94\x14a\x03\xD6W\x80c\xEE!\x94#\x14a\x03\xF6W\x80c\xFC~(m\x14a\x04\x16W`\0\x80\xFD[\x80c\x95q\"\xAB\x14a\x03.W\x80c\x9B$\x9Fi\x14a\x03NW\x80c\xA6\x1951\x14a\x03nW\x80c\xB7`\xFA\xF9\x14a\x03\x8EW`\0\x80\xFD[\x80cK\x1D|\xF5\x11a\0\xD1W\x80cK\x1D|\xF5\x14a\x01\x9DW\x80cR\x87\xCE\x12\x14a\x01\xBDW\x80cp\xA0\x821\x14a\x02\xDAW\x80c\x8FA\xECZ\x14a\x03\x19W`\0\x80\xFD[\x80c\x03\x96\xCB`\x14a\x01\x17W\x80c\x1Ds'V\x14a\x01*W\x80c\x1F\xAD\x94\x8C\x14a\x01]W\x80c \\(x\x14a\x01}W`\0\x80\xFD[6a\x01\x12Wa\x01\x103a\x04\xCBV[\0[`\0\x80\xFD[a\x01\x10a\x01%6`\x04a-\x89V[a\x052V[4\x80\x15a\x016W`\0\x80\xFD[Pa\x01Ja\x01E6`\x04a/\x99V[a\x07\xC1V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01iW`\0\x80\xFD[Pa\x01\x10a\x01x6`\x04a0\xA2V[a\t4V[4\x80\x15a\x01\x89W`\0\x80\xFD[Pa\x01\x10a\x01\x986`\x04a0\xF8V[a\ntV[4\x80\x15a\x01\xA9W`\0\x80\xFD[Pa\x01\x10a\x01\xB86`\x04a0\xA2V[a\x0B\xF0V[4\x80\x15a\x01\xC9W`\0\x80\xFD[Pa\x02\x82a\x01\xD86`\x04a1$V[`@\x80Q`\xA0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x81R`@\x91\x82\x90 \x82Q`\xA0\x81\x01\x84R\x81T`\x01`\x01`p\x1B\x03\x80\x82\x16\x83R`\x01`p\x1B\x82\x04`\xFF\x16\x15\x15\x94\x83\x01\x94\x90\x94R`\x01`x\x1B\x90\x04\x90\x92\x16\x92\x82\x01\x92\x90\x92R`\x01\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x81\x16``\x83\x01Rd\x01\0\0\0\0\x90\x04e\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x80\x82\x01R\x90V[`@\x80Q\x82Q`\x01`\x01`p\x1B\x03\x90\x81\x16\x82R` \x80\x85\x01Q\x15\x15\x90\x83\x01R\x83\x83\x01Q\x16\x91\x81\x01\x91\x90\x91R``\x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\x80\x91\x82\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x81\x01\x91\x90\x91R`\xA0\x01a\x01TV[4\x80\x15a\x02\xE6W`\0\x80\xFD[Pa\x01Ja\x02\xF56`\x04a1$V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T`\x01`\x01`p\x1B\x03\x16\x90V[4\x80\x15a\x03%W`\0\x80\xFD[Pa\x01J`\x01\x81V[4\x80\x15a\x03:W`\0\x80\xFD[Pa\x01\x10a\x03I6`\x04a1AV[a\x0F\xFCV[4\x80\x15a\x03ZW`\0\x80\xFD[Pa\x01\x10a\x03i6`\x04a1\xC5V[a\x10\xF9V[4\x80\x15a\x03zW`\0\x80\xFD[Pa\x01Ja\x03\x896`\x04a2\x1FV[a\x11\xAFV[a\x01\x10a\x03\x9C6`\x04a1$V[a\x04\xCBV[4\x80\x15a\x03\xADW`\0\x80\xFD[Pa\x01\x10a\x11\xF1V[4\x80\x15a\x03\xC2W`\0\x80\xFD[Pa\x01\x10a\x03\xD16`\x04a1$V[a\x13\x1AV[4\x80\x15a\x03\xE2W`\0\x80\xFD[Pa\x01\x10a\x03\xF16`\x04a2SV[a\x15RV[4\x80\x15a\x04\x02W`\0\x80\xFD[Pa\x01\x10a\x04\x116`\x04a2\x1FV[a\x16MV[4\x80\x15a\x04\"W`\0\x80\xFD[Pa\x04\x85a\x0416`\x04a1$V[`\0` \x81\x90R\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\x01`\x01`p\x1B\x03\x80\x83\x16\x92`\x01`p\x1B\x81\x04`\xFF\x16\x92`\x01`x\x1B\x90\x91\x04\x90\x91\x16\x90c\xFF\xFF\xFF\xFF\x81\x16\x90d\x01\0\0\0\0\x90\x04e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85V[`@\x80Q`\x01`\x01`p\x1B\x03\x96\x87\x16\x81R\x94\x15\x15` \x86\x01R\x92\x90\x94\x16\x91\x83\x01\x91\x90\x91Rc\xFF\xFF\xFF\xFF\x16``\x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x80\x82\x01R`\xA0\x01a\x01TV[a\x04\xD5\x814a\x18)V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T\x92Q`\x01`\x01`p\x1B\x03\x90\x93\x16\x83R\x92\x91\x7F-\xA4f\xA7\xB2C\x04\xF4~\x87\xFA.\x1EZ\x81\xB9\x83\x1C\xE5O\xEC\x19\x05\\\xE2w\xCA/9\xBAB\xC4\x91\x01[`@Q\x80\x91\x03\x90\xA2PPV[3`\0\x90\x81R` \x81\x90R`@\x90 c\xFF\xFF\xFF\xFF\x82\x16a\x05\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7Fmust specify unstake delay\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x81\x01Tc\xFF\xFF\xFF\xFF\x90\x81\x16\x90\x83\x16\x10\x15a\x05\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Fcannot decrease unstake time\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[\x80T`\0\x90a\x06\x17\x904\x90`\x01`x\x1B\x90\x04`\x01`\x01`p\x1B\x03\x16a2\xCAV[\x90P`\0\x81\x11a\x06^W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x1B\x9B\xC8\x1C\xDD\x18Z\xD9H\x1C\xDC\x19X\xDAY\x9AYY`r\x1B`D\x82\x01R`d\x01a\x05\x90V[`\x01`\x01`p\x1B\x03\x81\x11\x15a\x06\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rmstake overflow`\x90\x1B`D\x82\x01R`d\x01a\x05\x90V[`@\x80Q`\xA0\x81\x01\x82R\x83T`\x01`\x01`p\x1B\x03\x90\x81\x16\x82R`\x01` \x80\x84\x01\x82\x81R\x86\x84\x16\x85\x87\x01\x90\x81Rc\xFF\xFF\xFF\xFF\x80\x8B\x16``\x88\x01\x90\x81R`\0`\x80\x89\x01\x81\x81R3\x80\x83R\x96\x82\x90R\x90\x8A\x90 \x98Q\x89T\x95Q\x94Q\x89\x16`\x01`x\x1B\x02`\x01`x\x1B`\x01`\xE8\x1B\x03\x19\x95\x15\x15`\x01`p\x1B\x02n\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x97\x16\x91\x90\x99\x16\x17\x94\x90\x94\x17\x92\x90\x92\x16\x95\x90\x95\x17\x86UQ\x94\x90\x92\x01\x80T\x92Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16d\x01\0\0\0\0\x02i\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x94\x90\x93\x16\x93\x90\x93\x17\x17\x90U\x90Q\x7F\xA5\xAE\x83=\x0B\xB1\xDC\xD62\xD9\x8A\x8Bp\x97>\x85\x16\x81(\x98\xE1\x9B\xF2{p\x07\x1E\xBC\x8D\xC5,\x01\x90a\x07\xB4\x90\x84\x90\x87\x90\x91\x82Rc\xFF\xFF\xFF\xFF\x16` \x82\x01R`@\x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\0\x80Z\x90P30\x14a\x08\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FAA92 internal call only\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[\x84Q`@\x81\x01Q``\x82\x01Q\x81\x01a\x13\x88\x01Z\x10\x15a\x08@Wc\xDE\xAD\xDE\xAD`\xE0\x1B`\0R` `\0\xFD[\x87Q`\0\x90\x15a\x08\xD4W`\0a\x08]\x84`\0\x01Q`\0\x8C\x86a\x18\xC5V[\x90P\x80a\x08\xD2W`\0a\x08qa\x08\0a\x18\xDDV[\x80Q\x90\x91P\x15a\x08\xCCW\x84`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x8A` \x01Q\x7F\x1CO\xAD\xA77L\n\x9E\xE8\x84\x1F\xC3\x8A\xFE\x82\x93-\xC0\xF8\xE6\x90\x12\xE9'\xF0a\xA8\xBA\xE6\x11\xA2\x01\x87` \x01Q\x84`@Qa\x08\xC3\x92\x91\x90a3-V[`@Q\x80\x91\x03\x90\xA3[`\x01\x92PP[P[`\0\x88`\x80\x01QZ\x86\x03\x01\x90Pa\t&`\0\x83\x8B\x8B\x8B\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x88\x92Pa\x19\t\x91PPV[\x9A\x99PPPPPPPPPPV[\x81`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\tOWa\tOa-\xAFV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x88W\x81` \x01[a\tua,\xFFV[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\tmW\x90P[P\x90P`\0[\x82\x81\x10\x15a\n\x01W`\0\x82\x82\x81Q\x81\x10a\t\xAAWa\t\xAAa3FV[` \x02` \x01\x01Q\x90P`\0\x80a\t\xE5\x84\x8A\x8A\x87\x81\x81\x10a\t\xCDWa\t\xCDa3FV[\x90P` \x02\x81\x01\x90a\t\xDF\x91\x90a3\\V[\x85a\x1C\0V[\x91P\x91Pa\t\xF6\x84\x83\x83`\0a\x1D\x82V[PPP`\x01\x01a\t\x8EV[P`\0\x80[\x83\x81\x10\x15a\naWa\nU\x81\x88\x88\x84\x81\x81\x10a\n$Wa\n$a3FV[\x90P` \x02\x81\x01\x90a\n6\x91\x90a3\\V[\x85\x84\x81Q\x81\x10a\nHWa\nHa3FV[` \x02` \x01\x01Qa\x1F\x1EV[\x90\x91\x01\x90`\x01\x01a\n\x06V[Pa\nl\x84\x82a EV[PPPPPPV[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`\x01`p\x1B\x03\x16\x82\x11\x15a\n\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FWithdraw amount too large\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[\x80Ta\n\xF3\x90\x83\x90`\x01`\x01`p\x1B\x03\x16a3}V[\x81T`\x01`\x01`p\x1B\x03\x19\x16`\x01`\x01`p\x1B\x03\x91\x90\x91\x16\x17\x81U`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R` \x81\x01\x84\x90R3\x91\x7F\xD1\xC1\x9F\xBC\xD4U\x1A^\xDF\xB6mC\xD2\xE37\xC0H7\xAF\xDA4\x82\xB4+\xDFV\x9A\x8F\xCC\xDA\xE5\xFB\x91\x01`@Q\x80\x91\x03\x90\xA2`\0\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0B\x9FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0B\xA4V[``\x91P[PP\x90P\x80a\x0B\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rqfailed to withdraw`p\x1B`D\x82\x01R`d\x01a\x05\x90V[PPPPV[\x81`\0\x80[\x82\x81\x10\x15a\rdW6\x86\x86\x83\x81\x81\x10a\x0C\x10Wa\x0C\x10a3FV[\x90P` \x02\x81\x01\x90a\x0C\"\x91\x90a3\x90V[\x90P6`\0a\x0C1\x83\x80a3\xA6V[\x90\x92P\x90P`\0a\x0CH`@\x85\x01` \x86\x01a1$V[\x90P`\0\x19`\x01`\x01`\xA0\x1B\x03\x82\x16\x01a\x0C\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FAA96 invalid aggregator\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\rAW`\x01`\x01`\xA0\x1B\x03\x81\x16c\xE3V:O\x84\x84a\x0C\xD1`@\x89\x01\x89a3\xEFV[`@Q\x85c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C\xF0\x94\x93\x92\x91\x90a5\x9AV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\r\x08W`\0\x80\xFD[PZ\xFA\x92PPP\x80\x15a\r\x19WP`\x01[a\rAW`@Qc\x08j\x9Fu`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\x90V[a\rK\x82\x87a2\xCAV[\x95PPPPP\x80\x80a\r\\\x90a6\x17V[\x91PPa\x0B\xF5V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\x7FWa\r\x7Fa-\xAFV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xB8W\x81` \x01[a\r\xA5a,\xFFV[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\r\x9DW\x90P[P\x90P`\0\x80[\x84\x81\x10\x15a\x0E\xA3W6\x88\x88\x83\x81\x81\x10a\r\xDAWa\r\xDAa3FV[\x90P` \x02\x81\x01\x90a\r\xEC\x91\x90a3\x90V[\x90P6`\0a\r\xFB\x83\x80a3\xA6V[\x90\x92P\x90P`\0a\x0E\x12`@\x85\x01` \x86\x01a1$V[\x90P\x81`\0[\x81\x81\x10\x15a\x0E\x8AW`\0\x89\x89\x81Q\x81\x10a\x0E4Wa\x0E4a3FV[` \x02` \x01\x01Q\x90P`\0\x80a\x0EW\x8B\x89\x89\x87\x81\x81\x10a\t\xCDWa\t\xCDa3FV[\x91P\x91Pa\x0Eg\x84\x83\x83\x89a\x1D\x82V[\x8Aa\x0Eq\x81a6\x17V[\x9BPPPPP\x80\x80a\x0E\x82\x90a6\x17V[\x91PPa\x0E\x18V[PPPPPP\x80\x80a\x0E\x9B\x90a6\x17V[\x91PPa\r\xBFV[P`\0\x80\x91P`\0[\x85\x81\x10\x15a\x0F\xBCW6\x89\x89\x83\x81\x81\x10a\x0E\xC7Wa\x0E\xC7a3FV[\x90P` \x02\x81\x01\x90a\x0E\xD9\x91\x90a3\x90V[\x90Pa\x0E\xEB`@\x82\x01` \x83\x01a1$V[`\x01`\x01`\xA0\x1B\x03\x16\x7FW_\xF3\xAC\xAD\xD5\xAB4\x8F\xE1\x85^!~\x0F6x\xF8\xD7g\xD7IL\x9F\x9F\xEF\xBE\xE2\xE1|\xCAM`@Q`@Q\x80\x91\x03\x90\xA26`\0a\x0F-\x83\x80a3\xA6V[\x90\x92P\x90P\x80`\0[\x81\x81\x10\x15a\x0F\xA4Wa\x0Fx\x88\x85\x85\x84\x81\x81\x10a\x0FTWa\x0FTa3FV[\x90P` \x02\x81\x01\x90a\x0Ff\x91\x90a3\\V[\x8B\x8B\x81Q\x81\x10a\nHWa\nHa3FV[a\x0F\x82\x90\x88a2\xCAV[\x96P\x87a\x0F\x8E\x81a6\x17V[\x98PP\x80\x80a\x0F\x9C\x90a6\x17V[\x91PPa\x0F6V[PPPPP\x80\x80a\x0F\xB4\x90a6\x17V[\x91PPa\x0E\xACV[P`@Q`\0\x90\x7FW_\xF3\xAC\xAD\xD5\xAB4\x8F\xE1\x85^!~\x0F6x\xF8\xD7g\xD7IL\x9F\x9F\xEF\xBE\xE2\xE1|\xCAM\x90\x82\x90\xA2a\x0F\xF2\x86\x82a EV[PPPPPPPPV[\x83\x15\x80\x15a\x10\x12WP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15[\x15a\x10_W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FAA20 account not deployed\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x14\x81\x10a\x10\xD7W`\0a\x10v`\x14\x82\x84\x86a60V[a\x10\x7F\x91a6ZV[``\x1C\x90P\x80;`\0\x03a\x10\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FAA30 paymaster not deployed\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[P[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\0`$\x82\x01R`D\x01a\x05\x90V[`@Qc+\x87\r\x1B`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cW\x0E\x1A6\x90a\x11G\x90\x85\x90\x85\x90`\x04\x01a6\x8FV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x11fW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8A\x91\x90a6\xA3V[`@Qc6S\xDC\x03`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x05\x90V[`\0a\x11\xBA\x82a!CV[`@\x80Q` \x81\x01\x92\x90\x92R0\x90\x82\x01RF``\x82\x01R`\x80\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[3`\0\x90\x81R` \x81\x90R`@\x81 `\x01\x81\x01T\x90\x91c\xFF\xFF\xFF\xFF\x90\x91\x16\x90\x03a\x12JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x1B\x9B\xDD\x08\x1C\xDD\x18Z\xD9Y`\xB2\x1B`D\x82\x01R`d\x01a\x05\x90V[\x80T`\x01`p\x1B\x90\x04`\xFF\x16a\x12\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x11`$\x82\x01Rpalready unstaking`x\x1B`D\x82\x01R`d\x01a\x05\x90V[`\x01\x81\x01T`\0\x90a\x12\xAE\x90c\xFF\xFF\xFF\xFF\x16Ba6\xC0V[`\x01\x83\x01\x80Ti\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16d\x01\0\0\0\0e\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x02\x91\x90\x91\x17\x90\x91U\x83T`\xFF`p\x1B\x19\x16\x84U`@Q\x90\x81R\x90\x91P3\x90\x7F\xFA\x9B<\x14\xCC\x82\\A,\x9E\xD8\x1B;\xA3e\xA5\xB4YC\x94\x03\xF1\x88)\xE5r\xEDS\xA4\x18\x0F\n\x90` \x01a\x05&V[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`x\x1B\x90\x04`\x01`\x01`p\x1B\x03\x16\x80a\x13\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsNo stake to withdraw``\x1B`D\x82\x01R`d\x01a\x05\x90V[`\x01\x82\x01Td\x01\0\0\0\0\x90\x04e\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fmust call unlockStake() first\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x01\x82\x01TBd\x01\0\0\0\0\x90\x91\x04e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x11\x15a\x14EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FStake withdrawal is not due\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\x01\x82\x01\x80Ti\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U\x81T`\x01`x\x1B`\x01`\xE8\x1B\x03\x19\x16\x82U`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R` \x81\x01\x83\x90R3\x91\x7F\xB7\xC9\x18\xE0\xE2I\xF9\x99\xE9e\xCA\xFE\xB6\xC6d'\x1B?C\x17\xD2\x96F\x15\0\xE7\x1D\xA3\x9F\x0C\xBD\xA3\x91\x01`@Q\x80\x91\x03\x90\xA2`\0\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x14\xFCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x15\x01V[``\x91P[PP\x90P\x80a\x0B\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Ffailed to withdraw stake\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[a\x15Za,\xFFV[a\x15c\x85a!\\V[`\0\x80a\x15r`\0\x88\x85a\x1C\0V[\x91P\x91P`\0a\x15\x82\x83\x83a\"6V[\x90Pa\x15\x8DC`\0RV[`\0a\x15\x9B`\0\x8A\x87a\x1F\x1EV[\x90Pa\x15\xA6C`\0RV[`\0```\x01`\x01`\xA0\x1B\x03\x8A\x16\x15a\x16\x1CW\x89`\x01`\x01`\xA0\x1B\x03\x16\x89\x89`@Qa\x15\xD3\x92\x91\x90a6\xE6V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x16\x10W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\x15V[``\x91P[P\x90\x92P\x90P[\x86`\x80\x01Q\x83\x85` \x01Q\x86`@\x01Q\x85\x85`@Qc\x01\x16\xF5\x93`\xE7\x1B\x81R`\x04\x01a\x05\x90\x96\x95\x94\x93\x92\x91\x90a6\xF6V[a\x16Ua,\xFFV[a\x16^\x82a!\\V[`\0\x80a\x16m`\0\x85\x85a\x1C\0V[\x91P\x91P`\0a\x16\x84\x84`\0\x01Q`\xA0\x01Qa#\x03V[\x84QQ\x90\x91P`\0\x90a\x16\x96\x90a#\x03V[\x90Pa\x16\xB5`@Q\x80`@\x01`@R\x80`\0\x81R` \x01`\0\x81RP\x90V[6`\0a\x16\xC5`@\x8A\x01\x8Aa3\xEFV[\x90\x92P\x90P`\0`\x14\x82\x10\x15a\x16\xDCW`\0a\x16\xF7V[a\x16\xEA`\x14`\0\x84\x86a60V[a\x16\xF3\x91a6ZV[``\x1C[\x90Pa\x17\x02\x81a#\x03V[\x93PPPP`\0a\x17\x13\x86\x86a\"6V[\x90P`\0\x81`\0\x01Q\x90P`\0`\x01`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x90P`\0`@Q\x80`\xC0\x01`@R\x80\x8B`\x80\x01Q\x81R` \x01\x8B`@\x01Q\x81R` \x01\x83\x15\x15\x81R` \x01\x85` \x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x85`@\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x17\x90\x8C``\x01Q\x90V[\x90R\x90P`\x01`\x01`\xA0\x1B\x03\x83\x16\x15\x80\x15\x90a\x17\xB6WP`\x01`\x01`\xA0\x1B\x03\x83\x16`\x01\x14\x15[\x15a\x18\x08W`\0`@Q\x80`@\x01`@R\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01a\x17\xE0\x86a#\x03V[\x81RP\x90P\x81\x87\x87\x8A\x84`@Qc>\xBB-9`\xE2\x1B\x81R`\x04\x01a\x05\x90\x95\x94\x93\x92\x91\x90a7\x98V[\x80\x86\x86\x89`@Qc\xE0\xCF\xF0_`\xE0\x1B\x81R`\x04\x01a\x05\x90\x94\x93\x92\x91\x90a8\x18V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x90\x91\x90a\x18Z\x90\x84\x90`\x01`\x01`p\x1B\x03\x16a2\xCAV[\x90P`\x01`\x01`p\x1B\x03\x81\x11\x15a\x18\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Rodeposit overflow`\x80\x1B`D\x82\x01R`d\x01a\x05\x90V[\x81T`\x01`\x01`p\x1B\x03\x19\x16`\x01`\x01`p\x1B\x03\x91\x90\x91\x16\x17\x90UPPV[`\0\x80`\0\x84Q` \x86\x01\x87\x89\x87\xF1\x95\x94PPPPPV[``=\x82\x81\x11\x15a\x18\xEBWP\x81[`@Q` \x82\x01\x81\x01`@R\x81\x81R\x81`\0` \x83\x01>\x93\x92PPPV[`\0\x80Z\x85Q\x90\x91P`\0\x90\x81a\x19\x1F\x82a#RV[`\xA0\x83\x01Q\x90\x91P`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19>W\x82Q\x93Pa\x1A\xE5V[\x80\x93P`\0\x88Q\x11\x15a\x1A\xE5W\x86\x82\x02\x95P`\x02\x8A`\x02\x81\x11\x15a\x19dWa\x19da8oV[\x14a\x19\xD6W``\x83\x01Q`@Qc\xA9\xA24\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA9\xA24\t\x91a\x19\x9E\x90\x8E\x90\x8D\x90\x8C\x90`\x04\x01a8\x85V[`\0`@Q\x80\x83\x03\x81`\0\x88\x80;\x15\x80\x15a\x19\xB8W`\0\x80\xFD[P\x87\xF1\x15\x80\x15a\x19\xCCW=`\0\x80>=`\0\xFD[PPPPPa\x1A\xE5V[``\x83\x01Q`@Qc\xA9\xA24\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA9\xA24\t\x91a\x1A\x0B\x90\x8E\x90\x8D\x90\x8C\x90`\x04\x01a8\x85V[`\0`@Q\x80\x83\x03\x81`\0\x88\x80;\x15\x80\x15a\x1A%W`\0\x80\xFD[P\x87\xF1\x93PPPP\x80\x15a\x1A7WP`\x01[a\x1A\xE5Wa\x1ACa8\xCCV[\x80c\x08\xC3y\xA0\x03a\x1A\x9CWPa\x1AWa8\xE8V[\x80a\x1AbWPa\x1A\x9EV[\x8B\x81`@Q` \x01a\x1At\x91\x90a9qV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\x11\x013[`\xE1\x1B\x82Ra\x05\x90\x92\x91`\x04\x01a3-V[P[\x8A`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x12\x90\x82\x01Rq\x10PML\x08\x1C\x1B\xDC\xDD\x13\xDC\x08\x1C\x99]\x99\\\x9D`r\x1B``\x82\x01R`\x80\x01\x90V[Z\x85\x03\x87\x01\x96P\x81\x87\x02\x95P\x85\x89`@\x01Q\x10\x15a\x1BNW\x8A`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x80\x83\x01\x82\x90R\x90\x82\x01R\x7FAA51 prefund below actualGasCost``\x82\x01R`\x80\x01\x90V[`@\x89\x01Q\x86\x90\x03a\x1B`\x85\x82a\x18)V[`\0\x80\x8C`\x02\x81\x11\x15a\x1BuWa\x1Bua8oV[\x14\x90P\x84`\xA0\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x85`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x8C` \x01Q\x7FIb\x8F\xD1G\x10\x06\xC1H-\xA8\x80(\xE9\xCEM\xBB\x08\x0B\x81\\\x9B\x03D\xD3\x9EZ\x8En\xC1A\x9F\x88` \x01Q\x85\x8D\x8F`@Qa\x1B\xE8\x94\x93\x92\x91\x90\x93\x84R\x91\x15\x15` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPPPP\x95\x94PPPPPV[`\0\x80`\0Z\x84Q\x90\x91Pa\x1C\x15\x86\x82a#\x82V[a\x1C\x1E\x86a\x11\xAFV[` \x86\x01R`@\x81\x01Q``\x82\x01Q`\x80\x83\x01Q\x17\x17`\xE0\x87\x015\x17a\x01\0\x87\x015\x17n\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1C\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FAA94 gas values overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x90V[`\0\x80a\x1C\xAC\x84a${V[\x90Pa\x1C\xBA\x8A\x8A\x8A\x84a$\xC8V[\x97P\x91Pa\x1C\xC7C`\0RV[`\xA0\x84\x01Q``\x90`\x01`\x01`\xA0\x1B\x03\x16\x15a\x1C\xEFWa\x1C\xEA\x8B\x8B\x8B\x85\x87a'\0V[\x97P\x90P[`\0Z\x87\x03\x90P\x80\x8B`\xA0\x015\x10\x15a\x1DTW\x8B`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x1E\x90\x82\x01R\x7FAA40 over verificationGasLimit\0\0``\x82\x01R`\x80\x01\x90V[`@\x8A\x01\x83\x90R\x81``\x8B\x01R`\xC0\x8B\x015Z\x88\x03\x01\x8A`\x80\x01\x81\x81RPPPPPPPPP\x93P\x93\x91PPV[`\0\x80a\x1D\x8E\x85a)#V[\x91P\x91P\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1D\xF4W\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x14\x90\x82\x01Rs \xA0\x99\x1A\x109\xB4\xB3\xB70\xBA:\xB92\x902\xB997\xB9`a\x1B``\x82\x01R`\x80\x01\x90V[\x80\x15a\x1ELW\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x17\x90\x82\x01R\x7FAA22 expired or not due\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[`\0a\x1EW\x85a)#V[\x92P\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x1E\xB3W\x86`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x14\x90\x82\x01Rs \xA0\x99\x9A\x109\xB4\xB3\xB70\xBA:\xB92\x902\xB997\xB9`a\x1B``\x82\x01R`\x80\x01\x90V[\x81\x15a\x1F\x15W\x86`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`!\x90\x82\x01R\x7FAA32 paymaster expired or not du``\x82\x01R`e`\xF8\x1B`\x80\x82\x01R`\xA0\x01\x90V[PPPPPPPV[`\0\x80Z\x90P`\0a\x1F1\x84``\x01Q\x90V[\x90P0c\x1Ds'Va\x1FF``\x88\x01\x88a3\xEFV[\x87\x85`@Q\x85c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1Fg\x94\x93\x92\x91\x90a9\xAFV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x92PPP\x80\x15a\x1F\xA2WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1F\x9F\x91\x81\x01\x90a:bV[`\x01[a 9W`\0` `\0\x80>P`\0Qc!R!S`\xE0\x1B\x81\x01a \x04W\x86`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x0F\x90\x82\x01RnAA95 out of gas`\x88\x1B``\x82\x01R`\x80\x01\x90V[`\0\x85`\x80\x01QZa \x16\x90\x86a3}V[a \x91\x90a2\xCAV[\x90Pa 0\x88`\x02\x88\x86\x85a\x19\tV[\x94PPPa a \xEDV[``\x91P[PP\x90P\x80a!>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FAA91 failed send to beneficiary\0`D\x82\x01R`d\x01a\x05\x90V[PPPV[`\0a!N\x82a)vV[\x80Q\x90` \x01 \x90P\x91\x90PV[0c\x95q\"\xABa!o`@\x84\x01\x84a3\xEFV[a!|` \x86\x01\x86a1$V[a!\x8Aa\x01 \x87\x01\x87a3\xEFV[`@Q\x86c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a!\xAA\x95\x94\x93\x92\x91\x90a:{V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a!\xC2W`\0\x80\xFD[PZ\xFA\x92PPP\x80\x15a!\xD3WP`\x01[a\"3Wa!\xDFa8\xCCV[\x80c\x08\xC3y\xA0\x03a\"'WPa!\xF3a8\xE8V[\x80a!\xFEWPa\")V[\x80Q\x15a\"#W`\0\x81`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x92\x91\x90a3-V[PPV[P[=`\0\x80>=`\0\xFD[PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90a\"\\\x84a)\xB5V[\x90P`\0a\"i\x84a)\xB5V[\x82Q\x90\x91P`\x01`\x01`\xA0\x1B\x03\x81\x16a\"\x80WP\x80Q[` \x80\x84\x01Q`@\x80\x86\x01Q\x92\x85\x01Q\x90\x85\x01Q\x91\x92\x91e\xFF\xFF\xFF\xFF\xFF\xFF\x80\x83\x16\x90\x85\x16\x10\x15a\"\xAEW\x81\x93P[\x80e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x11\x15a\"\xCAW\x80\x92P[PP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16` \x85\x01R\x91\x16\x90\x82\x01R\x92PPP[\x92\x91PPV[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x95\x90\x95\x16\x82R\x81\x90R\x91\x90\x91 \x80T`\x01`x\x1B\x90\x04`\x01`\x01`p\x1B\x03\x16\x82R`\x01\x01Tc\xFF\xFF\xFF\xFF\x16\x90\x91R\x90V[`\xC0\x81\x01Q`\xE0\x82\x01Q`\0\x91\x90\x80\x82\x03a#nWP\x92\x91PPV[a#z\x82H\x83\x01a*&V[\x94\x93PPPPV[a#\x8F` \x83\x01\x83a1$V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x015\x90\x82\x01R`\x80\x80\x83\x015`@\x83\x01R`\xA0\x83\x015``\x83\x01R`\xC0\x80\x84\x015\x91\x83\x01\x91\x90\x91R`\xE0\x80\x84\x015\x91\x83\x01\x91\x90\x91Ra\x01\0\x83\x015\x90\x82\x01R6`\0a#\xEEa\x01 \x85\x01\x85a3\xEFV[\x90\x92P\x90P\x80\x15a$nW`\x14\x81\x10\x15a$JW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAA93 invalid paymasterAndData\0\0\0`D\x82\x01R`d\x01a\x05\x90V[a$X`\x14`\0\x83\x85a60V[a$a\x91a6ZV[``\x1C`\xA0\x84\x01Ra\x0B\xEAV[`\0`\xA0\x84\x01RPPPPV[`\xA0\x81\x01Q`\0\x90\x81\x90`\x01`\x01`\xA0\x1B\x03\x16a$\x99W`\x01a$\x9CV[`\x03[`\xFF\x16\x90P`\0\x83`\x80\x01Q\x82\x85``\x01Q\x02\x85`@\x01Q\x01\x01\x90P\x83`\xC0\x01Q\x81\x02\x92PPP\x91\x90PV[`\0\x80`\0Z\x85Q\x80Q\x91\x92P\x90a$\xED\x89\x88a$\xE8`@\x8C\x01\x8Ca3\xEFV[a*>V[`\xA0\x82\x01Qa$\xFBC`\0RV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a%CW`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T`\x01`\x01`p\x1B\x03\x16\x88\x81\x11a%`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(\x82\x91\x90\x81\x01\x90a;\rV[`\x01[a)\x0FWa(\x91a8\xCCV[\x80c\x08\xC3y\xA0\x03a(\xC2WPa(\xA5a8\xE8V[\x80a(\xB0WPa(\xC4V[\x8D\x81`@Q` \x01a\x1At\x91\x90a;\x98V[P[\x8C`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x16\x90\x82\x01RuAA33 reverted (or OOG)`P\x1B``\x82\x01R`\x80\x01\x90V[\x90\x9E\x90\x9DP\x9BPPPPPPPPPPPPV[`\0\x80\x82`\0\x03a)9WP`\0\x92\x83\x92P\x90PV[`\0a)D\x84a)\xB5V[\x90P\x80`@\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16B\x11\x80a)kWP\x80` \x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x16B\x10[\x90Q\x94\x90\x93P\x91PPV[``6`\0a)\x89a\x01@\x85\x01\x85a3\xEFV[\x91P\x91P\x83` \x81\x84\x03\x03`@Q\x94P` \x81\x01\x85\x01`@R\x80\x85R\x80\x82` \x87\x017PPPP\x91\x90PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x81`\xA0\x81\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16`\0\x03a)\xF1WPe\xFF\xFF\xFF\xFF\xFF\xFF[`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x83R`\xD0\x94\x90\x94\x1C` \x83\x01Re\xFF\xFF\xFF\xFF\xFF\xFF\x16\x92\x81\x01\x92\x90\x92RP\x90V[`\0\x81\x83\x10a*5W\x81a*7V[\x82[\x93\x92PPPV[\x80\x15a\x0B\xEAW\x82QQ`\x01`\x01`\xA0\x1B\x03\x81\x16;\x15a*\xA9W\x84`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x1F\x90\x82\x01R\x7FAA10 sender already constructed\0``\x82\x01R`\x80\x01\x90V[\x83Q``\x01Q`@Qc+\x87\r\x1B`\xE1\x1B\x81R`\0\x91`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x91cW\x0E\x1A6\x91\x90a+\x01\x90\x88\x90\x88\x90`\x04\x01a6\x8FV[` `@Q\x80\x83\x03\x81`\0\x88\x87\xF1\x15\x80\x15a+ W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+E\x91\x90a6\xA3V[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a+\xA7W\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x82\x01\x81\x90R`\x1B\x90\x82\x01R\x7FAA13 initCode failed or OOG\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14a,\x11W\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x80\x83\x01\x82\x90R\x90\x82\x01R\x7FAA14 initCode must return sender``\x82\x01R`\x80\x01\x90V[\x80`\x01`\x01`\xA0\x1B\x03\x16;`\0\x03a,tW\x85`@Qc\x11\x013[`\xE1\x1B\x81R`\x04\x01a\x05\x90\x91\x81R`@` \x80\x83\x01\x82\x90R\x90\x82\x01R\x7FAA15 initCode must create sender``\x82\x01R`\x80\x01\x90V[`\0a,\x83`\x14\x82\x86\x88a60V[a,\x8C\x91a6ZV[``\x1C\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x86` \x01Q\x7F\xD5\x1A\x9Ca&z\xA6\x19ia\x88>\xCF_\xF2\xDAf\x19\xC3}\xAC\x0F\xA9!\"Q?\xB3,\x03--\x83\x89`\0\x01Q`\xA0\x01Q`@Qa,\xEE\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPPV[`@Q\x80`\xA0\x01`@R\x80a-d`@Q\x80a\x01\0\x01`@R\x80`\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x81R` \x01`\0\x80\x19\x16\x81R` \x01`\0\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0` \x82\x84\x03\x12\x15a-\x9BW`\0\x80\xFD[\x815c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a*7W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\xA0\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a-\xE4Wa-\xE4a-\xAFV[`@RPV[a\x01\0\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a-\xE4Wa-\xE4a-\xAFV[`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a./Wa./a-\xAFV[`@RPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a.OWa.Oa-\xAFV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\"3W`\0\x80\xFD[\x805a.}\x81a.]V[\x91\x90PV[`\0\x81\x83\x03a\x01\x80\x81\x12\x15a.\x96W`\0\x80\xFD[`@Qa.\xA2\x81a-\xC5V[\x80\x92Pa\x01\0\x80\x83\x12\x15a.\xB5W`\0\x80\xFD[`@Q\x92Pa.\xC3\x83a-\xEAV[a.\xCC\x85a.rV[\x83R` \x85\x015` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015`\x80\x84\x01Ra/\x02`\xA0\x86\x01a.rV[`\xA0\x84\x01R`\xC0\x85\x015`\xC0\x84\x01R`\xE0\x85\x015`\xE0\x84\x01R\x82\x82R\x80\x85\x015` \x83\x01RPa\x01 \x84\x015`@\x82\x01Ra\x01@\x84\x015``\x82\x01Ra\x01`\x84\x015`\x80\x82\x01RPP\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12a/cW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/zW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a/\x92W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80a\x01\xC0\x85\x87\x03\x12\x15a/\xB0W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a/\xC7W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a/\xDBW`\0\x80\xFD[\x815a/\xE6\x81a.6V[`@Qa/\xF3\x82\x82a.\nV[\x82\x81R\x8A` \x84\x87\x01\x01\x11\x15a0\x08W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x98PPPPa0.\x88` \x89\x01a.\x82V[\x94Pa\x01\xA0\x87\x015\x91P\x80\x82\x11\x15a0EW`\0\x80\xFD[Pa0R\x87\x82\x88\x01a/QV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0pW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x87W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a/\x92W`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\xB7W`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xCDW`\0\x80\xFD[a0\xD9\x86\x82\x87\x01a0^V[\x90\x94P\x92PP` \x84\x015a0\xED\x81a.]V[\x80\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a1\x0BW`\0\x80\xFD[\x825a1\x16\x81a.]V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a16W`\0\x80\xFD[\x815a*7\x81a.]V[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a1YW`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a1pW`\0\x80\xFD[a1|\x89\x83\x8A\x01a/QV[\x90\x97P\x95P` \x88\x015\x91Pa1\x91\x82a.]V[\x90\x93P`@\x87\x015\x90\x80\x82\x11\x15a1\xA7W`\0\x80\xFD[Pa1\xB4\x88\x82\x89\x01a/QV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80` \x83\x85\x03\x12\x15a1\xD8W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xEEW`\0\x80\xFD[a1\xFA\x85\x82\x86\x01a/QV[\x90\x96\x90\x95P\x93PPPPV[`\0a\x01`\x82\x84\x03\x12\x15a2\x19W`\0\x80\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a21W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2GW`\0\x80\xFD[a#z\x84\x82\x85\x01a2\x06V[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a2iW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a2\x80W`\0\x80\xFD[a2\x8C\x88\x83\x89\x01a2\x06V[\x95P` \x87\x015\x91Pa2\x9E\x82a.]V[\x90\x93P`@\x86\x015\x90\x80\x82\x11\x15a0EW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\xFDWa\"\xFDa2\xB4V[`\0[\x83\x81\x10\x15a2\xF8W\x81\x81\x01Q\x83\x82\x01R` \x01a2\xE0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra3\x19\x81` \x86\x01` \x86\x01a2\xDDV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a#z`@\x83\x01\x84a3\x01V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x825a\x01^\x19\x836\x03\x01\x81\x12a3sW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\"\xFDWa\"\xFDa2\xB4V[`\0\x825`^\x19\x836\x03\x01\x81\x12a3sW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a3\xBDW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a3\xD7W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a/\x92W`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a4\x06W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a4 W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a/\x92W`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a4LW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a4kW`\0\x80\xFD[\x806\x03\x82\x13\x15a/\x92W`\0\x80\xFD[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\0a\x01`a4\xC2\x84a4\xB5\x85a.rV[`\x01`\x01`\xA0\x1B\x03\x16\x90RV[` \x83\x015` \x85\x01Ra4\xD9`@\x84\x01\x84a45V[\x82`@\x87\x01Ra4\xEC\x83\x87\x01\x82\x84a4zV[\x92PPPa4\xFD``\x84\x01\x84a45V[\x85\x83\x03``\x87\x01Ra5\x10\x83\x82\x84a4zV[\x92PPP`\x80\x83\x015`\x80\x85\x01R`\xA0\x83\x015`\xA0\x85\x01R`\xC0\x83\x015`\xC0\x85\x01R`\xE0\x83\x015`\xE0\x85\x01Ra\x01\0\x80\x84\x015\x81\x86\x01RPa\x01 a5W\x81\x85\x01\x85a45V[\x86\x84\x03\x83\x88\x01Ra5i\x84\x82\x84a4zV[\x93PPPPa\x01@a5}\x81\x85\x01\x85a45V[\x86\x84\x03\x83\x88\x01Ra5\x8F\x84\x82\x84a4zV[\x97\x96PPPPPPPV[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a6\0W\x86\x85\x03`_\x19\x01\x84R\x8256\x8C\x90\x03a\x01^\x19\x01\x81\x12a5\xDEW\x82\x83\xFD[a5\xEA\x86\x8D\x83\x01a4\xA3V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a5\xB8V[PPPP\x82\x81\x03` \x84\x01Ra5\x8F\x81\x85\x87a4zV[`\0`\x01\x82\x01a6)Wa6)a2\xB4V[P`\x01\x01\x90V[`\0\x80\x85\x85\x11\x15a6@W`\0\x80\xFD[\x83\x86\x11\x15a6MW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x815\x81\x81\x16\x91`\x14\x85\x10\x15a6\x87W\x80\x81\x86`\x14\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV[` \x81R`\0a#z` \x83\x01\x84\x86a4zV[`\0` \x82\x84\x03\x12\x15a6\xB5W`\0\x80\xFD[\x81Qa*7\x81a.]V[e\xFF\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x80\x82\x11\x15a6\xDFWa6\xDFa2\xB4V[P\x92\x91PPV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[\x86\x81R\x85` \x82\x01R`\0e\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`@\x84\x01R\x80\x86\x16``\x84\x01RP\x83\x15\x15`\x80\x83\x01R`\xC0`\xA0\x83\x01Ra75`\xC0\x83\x01\x84a3\x01V[\x98\x97PPPPPPPPV[\x80Q\x82R` \x81\x01Q` \x83\x01R`@\x81\x01Q\x15\x15`@\x83\x01R`\0``\x82\x01Qe\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x16``\x86\x01R\x80`\x80\x85\x01Q\x16`\x80\x86\x01RPP`\xA0\x82\x01Q`\xC0`\xA0\x85\x01Ra#z`\xC0\x85\x01\x82a3\x01V[`\0a\x01@\x80\x83Ra7\xAC\x81\x84\x01\x89a7AV[\x91PPa7\xC6` \x83\x01\x87\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[\x84Q``\x83\x01R` \x94\x85\x01Q`\x80\x83\x01R\x83Q`\xA0\x83\x01R\x92\x84\x01Q`\xC0\x82\x01R\x81Q`\x01`\x01`\xA0\x1B\x03\x16`\xE0\x82\x01R\x90\x83\x01Q\x80Qa\x01\0\x83\x01R\x90\x92\x01Qa\x01 \x90\x92\x01\x91\x90\x91R\x92\x91PPV[`\xE0\x81R`\0a8+`\xE0\x83\x01\x87a7AV[\x90Pa8D` \x83\x01\x86\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[\x83Q``\x83\x01R` \x84\x01Q`\x80\x83\x01R\x82Q`\xA0\x83\x01R` \x83\x01Q`\xC0\x83\x01R\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0`\x03\x85\x10a8\xA5WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x84\x82R``` \x83\x01Ra8\xBC``\x83\x01\x85a3\x01V[\x90P\x82`@\x83\x01R\x94\x93PPPPV[`\0`\x03=\x11\x15a8\xE5W`\x04`\0\x80>P`\0Q`\xE0\x1C[\x90V[`\0`D=\x10\x15a8\xF6W\x90V[`@Q`\x03\x19=\x81\x01`\x04\x83>\x81Q=`\x01`\x01`@\x1B\x03\x81`$\x84\x01\x11\x81\x84\x11\x17\x15a9%WPPPPP\x90V[\x82\x85\x01\x91P\x81Q\x81\x81\x11\x15a9=WPPPPPP\x90V[\x84=\x87\x01\x01` \x82\x85\x01\x01\x11\x15a9WWPPPPPP\x90V[a9f` \x82\x86\x01\x01\x87a.\nV[P\x90\x95\x94PPPPPV[u\x02\n\t\xA9\x81\x03\x83{\x9B\xA2{\x81\x03\x93+\xB3+\x93\xA3+!\xD1`U\x1B\x81R`\0\x82Qa9\xA2\x81`\x16\x85\x01` \x87\x01a2\xDDV[\x91\x90\x91\x01`\x16\x01\x92\x91PPV[`\0a\x01\xC0\x80\x83Ra9\xC4\x81\x84\x01\x87\x89a4zV[\x90P\x84Q`\x01\x80`\xA0\x1B\x03\x80\x82Q\x16` \x86\x01R` \x82\x01Q`@\x86\x01R`@\x82\x01Q``\x86\x01R``\x82\x01Q`\x80\x86\x01R`\x80\x82\x01Q`\xA0\x86\x01R\x80`\xA0\x83\x01Q\x16`\xC0\x86\x01RP`\xC0\x81\x01Q`\xE0\x85\x01R`\xE0\x81\x01Qa\x01\0\x85\x01RP` \x85\x01Qa\x01 \x84\x01R`@\x85\x01Qa\x01@\x84\x01R``\x85\x01Qa\x01`\x84\x01R`\x80\x85\x01Qa\x01\x80\x84\x01R\x82\x81\x03a\x01\xA0\x84\x01Ra5\x8F\x81\x85a3\x01V[`\0` \x82\x84\x03\x12\x15a:tW`\0\x80\xFD[PQ\x91\x90PV[``\x81R`\0a:\x8F``\x83\x01\x87\x89a4zV[`\x01`\x01`\xA0\x1B\x03\x86\x16` \x84\x01R\x82\x81\x03`@\x84\x01Ra75\x81\x85\x87a4zV[``\x81R`\0a:\xC4``\x83\x01\x86a4\xA3V[` \x83\x01\x94\x90\x94RP`@\x01R\x91\x90PV[n\x02\n\t\x91\x99\x03\x93+\xB3+\x93\xA3+!\xD1`\x8D\x1B\x81R`\0\x82Qa;\0\x81`\x0F\x85\x01` \x87\x01a2\xDDV[\x91\x90\x91\x01`\x0F\x01\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a; W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a;6W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a;GW`\0\x80\xFD[\x80Qa;R\x81a.6V[`@Qa;_\x82\x82a.\nV[\x82\x81R\x87` \x84\x86\x01\x01\x11\x15a;tW`\0\x80\xFD[a;\x85\x83` \x83\x01` \x87\x01a2\xDDV[` \x96\x90\x96\x01Q\x95\x97\x95\x96PPPPPPV[n\x02\n\t\x99\x99\x03\x93+\xB3+\x93\xA3+!\xD1`\x8D\x1B\x81R`\0\x82Qa;\0\x81`\x0F\x85\x01` \x87\x01a2\xDDV\xFE\xA2dipfsX\"\x12 b\xFDfw\xCAM\xBF\xAD\xAB\xEB\xC6\xC7\xA3\x0FX\xBD\xA5y\xC1`i'j\x16\xAB\xD3\x88\xEE\xF6\xA9\xB1\x84dsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static ENTRYPOINT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct EntryPoint(::ethers::contract::Contract); + impl ::core::clone::Clone for EntryPoint { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for EntryPoint { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for EntryPoint { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for EntryPoint { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(EntryPoint)).field(&self.address()).finish() + } + } + impl EntryPoint { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + ENTRYPOINT_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + ENTRYPOINT_ABI.clone(), + ENTRYPOINT_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `SIG_VALIDATION_FAILED` (0x8f41ec5a) function + pub fn sig_validation_failed( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([143, 65, 236, 90], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_validateSenderAndPaymaster` (0x957122ab) function + pub fn validate_sender_and_paymaster( + &self, + init_code: ::ethers::core::types::Bytes, + sender: ::ethers::core::types::Address, + paymaster_and_data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [149, 113, 34, 171], + (init_code, sender, paymaster_and_data), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addStake` (0x0396cb60) function + pub fn add_stake( + &self, + unstake_delay_sec: u32, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([3, 150, 203, 96], unstake_delay_sec) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `depositTo` (0xb760faf9) function + pub fn deposit_to( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([183, 96, 250, 249], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `deposits` (0xfc7e286d) function + pub fn deposits( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall< + M, + (u128, bool, u128, u32, u64), + > { + self.0 + .method_hash([252, 126, 40, 109], p0) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getDepositInfo` (0x5287ce12) function + pub fn get_deposit_info( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 135, 206, 18], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getSenderAddress` (0x9b249f69) function + pub fn get_sender_address( + &self, + init_code: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([155, 36, 159, 105], init_code) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getUserOpHash` (0xa6193531) function + pub fn get_user_op_hash( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([166, 25, 53, 49], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `handleAggregatedOps` (0x4b1d7cf5) function + pub fn handle_aggregated_ops( + &self, + ops_per_aggregator: ::std::vec::Vec, + beneficiary: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([75, 29, 124, 245], (ops_per_aggregator, beneficiary)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `handleOps` (0x1fad948c) function + pub fn handle_ops( + &self, + ops: ::std::vec::Vec, + beneficiary: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([31, 173, 148, 140], (ops, beneficiary)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `innerHandleOp` (0x1d732756) function + pub fn inner_handle_op( + &self, + call_data: ::ethers::core::types::Bytes, + op_info: UserOpInfo, + context: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([29, 115, 39, 86], (call_data, op_info, context)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `simulateHandleOp` (0xd6383f94) function + pub fn simulate_handle_op( + &self, + op: UserOperation, + target: ::ethers::core::types::Address, + target_call_data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([214, 56, 63, 148], (op, target, target_call_data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `simulateValidation` (0xee219423) function + pub fn simulate_validation( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([238, 33, 148, 35], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `unlockStake` (0xbb9fe6bf) function + pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([187, 159, 230, 191], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawStake` (0xc23a5cea) function + pub fn withdraw_stake( + &self, + withdraw_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([194, 58, 92, 234], withdraw_address) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawTo` (0x205c2878) function + pub fn withdraw_to( + &self, + withdraw_address: ::ethers::core::types::Address, + withdraw_amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 92, 40, 120], (withdraw_address, withdraw_amount)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AccountDeployed` event + pub fn account_deployed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + AccountDeployedFilter, + > { + self.0.event() + } + ///Gets the contract's `Deposited` event + pub fn deposited_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + DepositedFilter, + > { + self.0.event() + } + ///Gets the contract's `SignatureAggregatorChanged` event + pub fn signature_aggregator_changed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + SignatureAggregatorChangedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeLocked` event + pub fn stake_locked_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeLockedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeUnlocked` event + pub fn stake_unlocked_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeUnlockedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeWithdrawn` event + pub fn stake_withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeWithdrawnFilter, + > { + self.0.event() + } + ///Gets the contract's `UserOperationEvent` event + pub fn user_operation_event_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + UserOperationEventFilter, + > { + self.0.event() + } + ///Gets the contract's `UserOperationRevertReason` event + pub fn user_operation_revert_reason_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + UserOperationRevertReasonFilter, + > { + self.0.event() + } + ///Gets the contract's `Withdrawn` event + pub fn withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + WithdrawnFilter, + > { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + EntryPointEvents, + > { + self.0.event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for EntryPoint { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `ExecutionResult` with signature `ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)` and selector `0x8b7ac980` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ExecutionResult", + abi = "ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)" + )] + pub struct ExecutionResult { + pub pre_op_gas: ::ethers::core::types::U256, + pub paid: ::ethers::core::types::U256, + pub valid_after: u64, + pub valid_until: u64, + pub target_success: bool, + pub target_result: ::ethers::core::types::Bytes, + } + ///Custom Error type `FailedOp` with signature `FailedOp(uint256,string)` and selector `0x220266b6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "FailedOp", abi = "FailedOp(uint256,string)")] + pub struct FailedOp { + pub op_index: ::ethers::core::types::U256, + pub reason: ::std::string::String, + } + ///Custom Error type `SenderAddressResult` with signature `SenderAddressResult(address)` and selector `0x6ca7b806` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "SenderAddressResult", abi = "SenderAddressResult(address)")] + pub struct SenderAddressResult { + pub sender: ::ethers::core::types::Address, + } + ///Custom Error type `SignatureValidationFailed` with signature `SignatureValidationFailed(address)` and selector `0x86a9f750` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "SignatureValidationFailed", + abi = "SignatureValidationFailed(address)" + )] + pub struct SignatureValidationFailed { + pub aggregator: ::ethers::core::types::Address, + } + ///Custom Error type `ValidationResult` with signature `ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0xe0cff05f` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ValidationResult", + abi = "ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))" + )] + pub struct ValidationResult { + pub return_info: ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + bool, + u64, + u64, + ::ethers::core::types::Bytes, + ), + pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + } + ///Custom Error type `ValidationResultWithAggregation` with signature `ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))` and selector `0xfaecb4e4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ValidationResultWithAggregation", + abi = "ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))" + )] + pub struct ValidationResultWithAggregation { + pub return_info: ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + bool, + u64, + u64, + ::ethers::core::types::Bytes, + ), + pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub aggregator_info: ( + ::ethers::core::types::Address, + (::ethers::core::types::U256, ::ethers::core::types::U256), + ), + } + ///Container type for all of the contract's custom errors + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum EntryPointErrors { + ExecutionResult(ExecutionResult), + FailedOp(FailedOp), + SenderAddressResult(SenderAddressResult), + SignatureValidationFailed(SignatureValidationFailed), + ValidationResult(ValidationResult), + ValidationResultWithAggregation(ValidationResultWithAggregation), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for EntryPointErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( + data, + ) { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ExecutionResult(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::FailedOp(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::SenderAddressResult(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SignatureValidationFailed(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ValidationResult(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ValidationResultWithAggregation(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for EntryPointErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::ExecutionResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::FailedOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SenderAddressResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SignatureValidationFailed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidationResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidationResultWithAggregation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for EntryPointErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for EntryPointErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ExecutionResult(element) => ::core::fmt::Display::fmt(element, f), + Self::FailedOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SenderAddressResult(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::SignatureValidationFailed(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidationResult(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidationResultWithAggregation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for EntryPointErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for EntryPointErrors { + fn from(value: ExecutionResult) -> Self { + Self::ExecutionResult(value) + } + } + impl ::core::convert::From for EntryPointErrors { + fn from(value: FailedOp) -> Self { + Self::FailedOp(value) + } + } + impl ::core::convert::From for EntryPointErrors { + fn from(value: SenderAddressResult) -> Self { + Self::SenderAddressResult(value) + } + } + impl ::core::convert::From for EntryPointErrors { + fn from(value: SignatureValidationFailed) -> Self { + Self::SignatureValidationFailed(value) + } + } + impl ::core::convert::From for EntryPointErrors { + fn from(value: ValidationResult) -> Self { + Self::ValidationResult(value) + } + } + impl ::core::convert::From for EntryPointErrors { + fn from(value: ValidationResultWithAggregation) -> Self { + Self::ValidationResultWithAggregation(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "AccountDeployed", + abi = "AccountDeployed(bytes32,address,address,address)" + )] + pub struct AccountDeployedFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + pub factory: ::ethers::core::types::Address, + pub paymaster: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Deposited", abi = "Deposited(address,uint256)")] + pub struct DepositedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_deposit: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "SignatureAggregatorChanged", + abi = "SignatureAggregatorChanged(address)" + )] + pub struct SignatureAggregatorChangedFilter { + #[ethevent(indexed)] + pub aggregator: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeLocked", abi = "StakeLocked(address,uint256,uint256)")] + pub struct StakeLockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_staked: ::ethers::core::types::U256, + pub unstake_delay_sec: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeUnlocked", abi = "StakeUnlocked(address,uint256)")] + pub struct StakeUnlockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_time: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeWithdrawn", abi = "StakeWithdrawn(address,address,uint256)")] + pub struct StakeWithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "UserOperationEvent", + abi = "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)" + )] + pub struct UserOperationEventFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub paymaster: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub success: bool, + pub actual_gas_cost: ::ethers::core::types::U256, + pub actual_gas_used: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "UserOperationRevertReason", + abi = "UserOperationRevertReason(bytes32,address,uint256,bytes)" + )] + pub struct UserOperationRevertReasonFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub revert_reason: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,address,uint256)")] + pub struct WithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + ///Container type for all of the contract's events + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum EntryPointEvents { + AccountDeployedFilter(AccountDeployedFilter), + DepositedFilter(DepositedFilter), + SignatureAggregatorChangedFilter(SignatureAggregatorChangedFilter), + StakeLockedFilter(StakeLockedFilter), + StakeUnlockedFilter(StakeUnlockedFilter), + StakeWithdrawnFilter(StakeWithdrawnFilter), + UserOperationEventFilter(UserOperationEventFilter), + UserOperationRevertReasonFilter(UserOperationRevertReasonFilter), + WithdrawnFilter(WithdrawnFilter), + } + impl ::ethers::contract::EthLogDecode for EntryPointEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AccountDeployedFilter::decode_log(log) { + return Ok(EntryPointEvents::AccountDeployedFilter(decoded)); + } + if let Ok(decoded) = DepositedFilter::decode_log(log) { + return Ok(EntryPointEvents::DepositedFilter(decoded)); + } + if let Ok(decoded) = SignatureAggregatorChangedFilter::decode_log(log) { + return Ok(EntryPointEvents::SignatureAggregatorChangedFilter(decoded)); + } + if let Ok(decoded) = StakeLockedFilter::decode_log(log) { + return Ok(EntryPointEvents::StakeLockedFilter(decoded)); + } + if let Ok(decoded) = StakeUnlockedFilter::decode_log(log) { + return Ok(EntryPointEvents::StakeUnlockedFilter(decoded)); + } + if let Ok(decoded) = StakeWithdrawnFilter::decode_log(log) { + return Ok(EntryPointEvents::StakeWithdrawnFilter(decoded)); + } + if let Ok(decoded) = UserOperationEventFilter::decode_log(log) { + return Ok(EntryPointEvents::UserOperationEventFilter(decoded)); + } + if let Ok(decoded) = UserOperationRevertReasonFilter::decode_log(log) { + return Ok(EntryPointEvents::UserOperationRevertReasonFilter(decoded)); + } + if let Ok(decoded) = WithdrawnFilter::decode_log(log) { + return Ok(EntryPointEvents::WithdrawnFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for EntryPointEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AccountDeployedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::DepositedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SignatureAggregatorChangedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeLockedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeUnlockedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeWithdrawnFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UserOperationEventFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UserOperationRevertReasonFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: AccountDeployedFilter) -> Self { + Self::AccountDeployedFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: DepositedFilter) -> Self { + Self::DepositedFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: SignatureAggregatorChangedFilter) -> Self { + Self::SignatureAggregatorChangedFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: StakeLockedFilter) -> Self { + Self::StakeLockedFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: StakeUnlockedFilter) -> Self { + Self::StakeUnlockedFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: StakeWithdrawnFilter) -> Self { + Self::StakeWithdrawnFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: UserOperationEventFilter) -> Self { + Self::UserOperationEventFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: UserOperationRevertReasonFilter) -> Self { + Self::UserOperationRevertReasonFilter(value) + } + } + impl ::core::convert::From for EntryPointEvents { + fn from(value: WithdrawnFilter) -> Self { + Self::WithdrawnFilter(value) + } + } + ///Container type for all input parameters for the `SIG_VALIDATION_FAILED` function with signature `SIG_VALIDATION_FAILED()` and selector `0x8f41ec5a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "SIG_VALIDATION_FAILED", abi = "SIG_VALIDATION_FAILED()")] + pub struct SigValidationFailedCall; + ///Container type for all input parameters for the `_validateSenderAndPaymaster` function with signature `_validateSenderAndPaymaster(bytes,address,bytes)` and selector `0x957122ab` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "_validateSenderAndPaymaster", + abi = "_validateSenderAndPaymaster(bytes,address,bytes)" + )] + pub struct ValidateSenderAndPaymasterCall { + pub init_code: ::ethers::core::types::Bytes, + pub sender: ::ethers::core::types::Address, + pub paymaster_and_data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "addStake", abi = "addStake(uint32)")] + pub struct AddStakeCall { + pub unstake_delay_sec: u32, + } + ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "depositTo", abi = "depositTo(address)")] + pub struct DepositToCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `deposits` function with signature `deposits(address)` and selector `0xfc7e286d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "deposits", abi = "deposits(address)")] + pub struct DepositsCall(pub ::ethers::core::types::Address); + ///Container type for all input parameters for the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getDepositInfo", abi = "getDepositInfo(address)")] + pub struct GetDepositInfoCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getSenderAddress` function with signature `getSenderAddress(bytes)` and selector `0x9b249f69` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getSenderAddress", abi = "getSenderAddress(bytes)")] + pub struct GetSenderAddressCall { + pub init_code: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "getUserOpHash", + abi = "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct GetUserOpHashCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `handleAggregatedOps` function with signature `handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)` and selector `0x4b1d7cf5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "handleAggregatedOps", + abi = "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)" + )] + pub struct HandleAggregatedOpsCall { + pub ops_per_aggregator: ::std::vec::Vec, + pub beneficiary: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `handleOps` function with signature `handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)` and selector `0x1fad948c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "handleOps", + abi = "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)" + )] + pub struct HandleOpsCall { + pub ops: ::std::vec::Vec, + pub beneficiary: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `innerHandleOp` function with signature `innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)` and selector `0x1d732756` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "innerHandleOp", + abi = "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)" + )] + pub struct InnerHandleOpCall { + pub call_data: ::ethers::core::types::Bytes, + pub op_info: UserOpInfo, + pub context: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `simulateHandleOp` function with signature `simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)` and selector `0xd6383f94` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "simulateHandleOp", + abi = "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)" + )] + pub struct SimulateHandleOpCall { + pub op: UserOperation, + pub target: ::ethers::core::types::Address, + pub target_call_data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `simulateValidation` function with signature `simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xee219423` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "simulateValidation", + abi = "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct SimulateValidationCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "unlockStake", abi = "unlockStake()")] + pub struct UnlockStakeCall; + ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] + pub struct WithdrawStakeCall { + pub withdraw_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] + pub struct WithdrawToCall { + pub withdraw_address: ::ethers::core::types::Address, + pub withdraw_amount: ::ethers::core::types::U256, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum EntryPointCalls { + SigValidationFailed(SigValidationFailedCall), + ValidateSenderAndPaymaster(ValidateSenderAndPaymasterCall), + AddStake(AddStakeCall), + BalanceOf(BalanceOfCall), + DepositTo(DepositToCall), + Deposits(DepositsCall), + GetDepositInfo(GetDepositInfoCall), + GetSenderAddress(GetSenderAddressCall), + GetUserOpHash(GetUserOpHashCall), + HandleAggregatedOps(HandleAggregatedOpsCall), + HandleOps(HandleOpsCall), + InnerHandleOp(InnerHandleOpCall), + SimulateHandleOp(SimulateHandleOpCall), + SimulateValidation(SimulateValidationCall), + UnlockStake(UnlockStakeCall), + WithdrawStake(WithdrawStakeCall), + WithdrawTo(WithdrawToCall), + } + impl ::ethers::core::abi::AbiDecode for EntryPointCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SigValidationFailed(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ValidateSenderAndPaymaster(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::AddStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::DepositTo(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Deposits(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetDepositInfo(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::GetSenderAddress(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetUserOpHash(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::HandleAggregatedOps(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::HandleOps(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::InnerHandleOp(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SimulateHandleOp(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SimulateValidation(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::UnlockStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::WithdrawStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::WithdrawTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for EntryPointCalls { + fn encode(self) -> Vec { + match self { + Self::SigValidationFailed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSenderAndPaymaster(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::AddStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BalanceOf(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DepositTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Deposits(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetDepositInfo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetSenderAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetUserOpHash(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::HandleAggregatedOps(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::HandleOps(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InnerHandleOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateHandleOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UnlockStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for EntryPointCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::SigValidationFailed(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSenderAndPaymaster(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), + Self::Deposits(element) => ::core::fmt::Display::fmt(element, f), + Self::GetDepositInfo(element) => ::core::fmt::Display::fmt(element, f), + Self::GetSenderAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::GetUserOpHash(element) => ::core::fmt::Display::fmt(element, f), + Self::HandleAggregatedOps(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::HandleOps(element) => ::core::fmt::Display::fmt(element, f), + Self::InnerHandleOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateHandleOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateValidation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: SigValidationFailedCall) -> Self { + Self::SigValidationFailed(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: ValidateSenderAndPaymasterCall) -> Self { + Self::ValidateSenderAndPaymaster(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: AddStakeCall) -> Self { + Self::AddStake(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: DepositToCall) -> Self { + Self::DepositTo(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: DepositsCall) -> Self { + Self::Deposits(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: GetDepositInfoCall) -> Self { + Self::GetDepositInfo(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: GetSenderAddressCall) -> Self { + Self::GetSenderAddress(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: GetUserOpHashCall) -> Self { + Self::GetUserOpHash(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: HandleAggregatedOpsCall) -> Self { + Self::HandleAggregatedOps(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: HandleOpsCall) -> Self { + Self::HandleOps(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: InnerHandleOpCall) -> Self { + Self::InnerHandleOp(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: SimulateHandleOpCall) -> Self { + Self::SimulateHandleOp(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: SimulateValidationCall) -> Self { + Self::SimulateValidation(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: UnlockStakeCall) -> Self { + Self::UnlockStake(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: WithdrawStakeCall) -> Self { + Self::WithdrawStake(value) + } + } + impl ::core::convert::From for EntryPointCalls { + fn from(value: WithdrawToCall) -> Self { + Self::WithdrawTo(value) + } + } + ///Container type for all return fields from the `SIG_VALIDATION_FAILED` function with signature `SIG_VALIDATION_FAILED()` and selector `0x8f41ec5a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct SigValidationFailedReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `deposits` function with signature `deposits(address)` and selector `0xfc7e286d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct DepositsReturn { + pub deposit: u128, + pub staked: bool, + pub stake: u128, + pub unstake_delay_sec: u32, + pub withdraw_time: u64, + } + ///Container type for all return fields from the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetDepositInfoReturn { + pub info: DepositInfo, + } + ///Container type for all return fields from the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetUserOpHashReturn(pub [u8; 32]); + ///Container type for all return fields from the `innerHandleOp` function with signature `innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)` and selector `0x1d732756` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct InnerHandleOpReturn { + pub actual_gas_cost: ::ethers::core::types::U256, + } + ///`MemoryUserOp(address,uint256,uint256,uint256,uint256,address,uint256,uint256)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct MemoryUserOp { + pub sender: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub call_gas_limit: ::ethers::core::types::U256, + pub verification_gas_limit: ::ethers::core::types::U256, + pub pre_verification_gas: ::ethers::core::types::U256, + pub paymaster: ::ethers::core::types::Address, + pub max_fee_per_gas: ::ethers::core::types::U256, + pub max_priority_fee_per_gas: ::ethers::core::types::U256, + } + ///`UserOpInfo((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct UserOpInfo { + pub m_user_op: MemoryUserOp, + pub user_op_hash: [u8; 32], + pub prefund: ::ethers::core::types::U256, + pub context_offset: ::ethers::core::types::U256, + pub pre_op_gas: ::ethers::core::types::U256, + } +} diff --git a/crates/types/src/contracts/gas_price_oracle.rs b/crates/types/src/contracts/gas_price_oracle.rs new file mode 100644 index 000000000..d9a424b0f --- /dev/null +++ b/crates/types/src/contracts/gas_price_oracle.rs @@ -0,0 +1,716 @@ +pub use gas_price_oracle::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod gas_price_oracle { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("DECIMALS"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("DECIMALS"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("baseFee"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("baseFee"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("decimals"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("decimals"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Pure, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("gasPrice"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("gasPrice"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getL1Fee"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getL1Fee"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("_data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getL1GasUsed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getL1GasUsed"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("_data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("l1BaseFee"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("l1BaseFee"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("overhead"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("overhead"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("scalar"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("scalar"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static GASPRICEORACLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x05\x97\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x93W`\x005`\xE0\x1C\x80cQ\x9BK\xD3\x11a\0fW\x80cQ\x9BK\xD3\x14a\0\xD4W\x80cn\xF2\\:\x14a\0\xDCW\x80c\xDE&\xC4\xA1\x14a\0\xE2W\x80c\xF4^e\xD8\x14a\0\xF5W\x80c\xFE\x17;\x97\x14a\0\xDCW`\0\x80\xFD[\x80c\x0C\x18\xC1b\x14a\0\x98W\x80c.\x0F&%\x14a\0\xB2W\x80c1<\xE5g\x14a\0\xBAW\x80cI\x94\x8E\x0E\x14a\0\xC1W[`\0\x80\xFD[a\0\xA0a\0\xFDV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xA0`\x06\x81V[`\x06a\0\xA0V[a\0\xA0a\0\xCF6`\x04a\x03\tV[a\x01mV[a\0\xA0a\x01\xCEV[Ha\0\xA0V[a\0\xA0a\0\xF06`\x04a\x03\tV[a\x02\x15V[a\0\xA0a\x02\xACV[`\0`\x15`!`\x99\x1B\x01`\x01`\x01`\xA0\x1B\x03\x16c\x8B#\x9Fs`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01h\x91\x90a\x03\xBAV[\x90P\x90V[`\0\x80a\x01y\x83a\x02\x15V[\x90P`\0a\x01\x85a\x01\xCEV[a\x01\x8F\x90\x83a\x03\xE9V[\x90P`\0a\x01\x9F`\x06`\na\x04\xEAV[\x90P`\0a\x01\xABa\x02\xACV[a\x01\xB5\x90\x84a\x03\xE9V[\x90P`\0a\x01\xC3\x83\x83a\x04\xFDV[\x97\x96PPPPPPPV[`\0`\x15`!`\x99\x1B\x01`\x01`\x01`\xA0\x1B\x03\x16c\\\xF2Ii`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01DW=`\0\x80>=`\0\xFD[\x80Q`\0\x90\x81\x90\x81[\x81\x81\x10\x15a\x02\x80W\x84\x81\x81Q\x81\x10a\x028Wa\x028a\x05\x1FV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\0\x03a\x02`Wa\x02Y`\x04\x84a\x055V[\x92Pa\x02nV[a\x02k`\x10\x84a\x055V[\x92P[\x80a\x02x\x81a\x05HV[\x91PPa\x02\x1EV[P`\0a\x02\x8Ba\0\xFDV[a\x02\x95\x90\x84a\x055V[\x90Pa\x02\xA3\x81a\x04@a\x055V[\x95\x94PPPPPV[`\0`\x15`!`\x99\x1B\x01`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x8CIf`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01DW=`\0\x80>=`\0\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x03\x1BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x033W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03GW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x03YWa\x03Ya\x02\xF3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03\x81Wa\x03\x81a\x02\xF3V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x03\x9AW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x03\xCCW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\0Wa\x04\0a\x03\xD3V[\x92\x91PPV[`\x01\x81\x81[\x80\x85\x11\x15a\x04AW\x81`\0\x19\x04\x82\x11\x15a\x04'Wa\x04'a\x03\xD3V[\x80\x85\x16\x15a\x044W\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90a\x04\x0BV[P\x92P\x92\x90PV[`\0\x82a\x04XWP`\x01a\x04\0V[\x81a\x04eWP`\0a\x04\0V[\x81`\x01\x81\x14a\x04{W`\x02\x81\x14a\x04\x85Wa\x04\xA1V[`\x01\x91PPa\x04\0V[`\xFF\x84\x11\x15a\x04\x96Wa\x04\x96a\x03\xD3V[PP`\x01\x82\x1Ba\x04\0V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a\x04\xC4WP\x81\x81\na\x04\0V[a\x04\xCE\x83\x83a\x04\x06V[\x80`\0\x19\x04\x82\x11\x15a\x04\xE2Wa\x04\xE2a\x03\xD3V[\x02\x93\x92PPPV[`\0a\x04\xF6\x83\x83a\x04IV[\x93\x92PPPV[`\0\x82a\x05\x1AWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\0Wa\x04\0a\x03\xD3V[`\0`\x01\x82\x01a\x05ZWa\x05Za\x03\xD3V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 X\x0Eo\xF1cm\xB7W\xD0=%\xC2~\x02\xE78\xB8!\x94\x08\xE5={\xE4X\x1FQ\xC4J\x01\xC5JdsolcC\0\x08\x15\x003"; + /// The bytecode of the contract. + pub static GASPRICEORACLE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x93W`\x005`\xE0\x1C\x80cQ\x9BK\xD3\x11a\0fW\x80cQ\x9BK\xD3\x14a\0\xD4W\x80cn\xF2\\:\x14a\0\xDCW\x80c\xDE&\xC4\xA1\x14a\0\xE2W\x80c\xF4^e\xD8\x14a\0\xF5W\x80c\xFE\x17;\x97\x14a\0\xDCW`\0\x80\xFD[\x80c\x0C\x18\xC1b\x14a\0\x98W\x80c.\x0F&%\x14a\0\xB2W\x80c1<\xE5g\x14a\0\xBAW\x80cI\x94\x8E\x0E\x14a\0\xC1W[`\0\x80\xFD[a\0\xA0a\0\xFDV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xA0`\x06\x81V[`\x06a\0\xA0V[a\0\xA0a\0\xCF6`\x04a\x03\tV[a\x01mV[a\0\xA0a\x01\xCEV[Ha\0\xA0V[a\0\xA0a\0\xF06`\x04a\x03\tV[a\x02\x15V[a\0\xA0a\x02\xACV[`\0`\x15`!`\x99\x1B\x01`\x01`\x01`\xA0\x1B\x03\x16c\x8B#\x9Fs`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01h\x91\x90a\x03\xBAV[\x90P\x90V[`\0\x80a\x01y\x83a\x02\x15V[\x90P`\0a\x01\x85a\x01\xCEV[a\x01\x8F\x90\x83a\x03\xE9V[\x90P`\0a\x01\x9F`\x06`\na\x04\xEAV[\x90P`\0a\x01\xABa\x02\xACV[a\x01\xB5\x90\x84a\x03\xE9V[\x90P`\0a\x01\xC3\x83\x83a\x04\xFDV[\x97\x96PPPPPPPV[`\0`\x15`!`\x99\x1B\x01`\x01`\x01`\xA0\x1B\x03\x16c\\\xF2Ii`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01DW=`\0\x80>=`\0\xFD[\x80Q`\0\x90\x81\x90\x81[\x81\x81\x10\x15a\x02\x80W\x84\x81\x81Q\x81\x10a\x028Wa\x028a\x05\x1FV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\0\x03a\x02`Wa\x02Y`\x04\x84a\x055V[\x92Pa\x02nV[a\x02k`\x10\x84a\x055V[\x92P[\x80a\x02x\x81a\x05HV[\x91PPa\x02\x1EV[P`\0a\x02\x8Ba\0\xFDV[a\x02\x95\x90\x84a\x055V[\x90Pa\x02\xA3\x81a\x04@a\x055V[\x95\x94PPPPPV[`\0`\x15`!`\x99\x1B\x01`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x8CIf`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01DW=`\0\x80>=`\0\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x03\x1BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x033W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03GW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x03YWa\x03Ya\x02\xF3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03\x81Wa\x03\x81a\x02\xF3V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x03\x9AW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x03\xCCW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\0Wa\x04\0a\x03\xD3V[\x92\x91PPV[`\x01\x81\x81[\x80\x85\x11\x15a\x04AW\x81`\0\x19\x04\x82\x11\x15a\x04'Wa\x04'a\x03\xD3V[\x80\x85\x16\x15a\x044W\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90a\x04\x0BV[P\x92P\x92\x90PV[`\0\x82a\x04XWP`\x01a\x04\0V[\x81a\x04eWP`\0a\x04\0V[\x81`\x01\x81\x14a\x04{W`\x02\x81\x14a\x04\x85Wa\x04\xA1V[`\x01\x91PPa\x04\0V[`\xFF\x84\x11\x15a\x04\x96Wa\x04\x96a\x03\xD3V[PP`\x01\x82\x1Ba\x04\0V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a\x04\xC4WP\x81\x81\na\x04\0V[a\x04\xCE\x83\x83a\x04\x06V[\x80`\0\x19\x04\x82\x11\x15a\x04\xE2Wa\x04\xE2a\x03\xD3V[\x02\x93\x92PPPV[`\0a\x04\xF6\x83\x83a\x04IV[\x93\x92PPPV[`\0\x82a\x05\x1AWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\0Wa\x04\0a\x03\xD3V[`\0`\x01\x82\x01a\x05ZWa\x05Za\x03\xD3V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 X\x0Eo\xF1cm\xB7W\xD0=%\xC2~\x02\xE78\xB8!\x94\x08\xE5={\xE4X\x1FQ\xC4J\x01\xC5JdsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static GASPRICEORACLE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct GasPriceOracle(::ethers::contract::Contract); + impl ::core::clone::Clone for GasPriceOracle { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for GasPriceOracle { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for GasPriceOracle { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for GasPriceOracle { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(GasPriceOracle)) + .field(&self.address()) + .finish() + } + } + impl GasPriceOracle { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + GASPRICEORACLE_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + GASPRICEORACLE_ABI.clone(), + GASPRICEORACLE_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `DECIMALS` (0x2e0f2625) function + pub fn DECIMALS( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([46, 15, 38, 37], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `baseFee` (0x6ef25c3a) function + pub fn base_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([110, 242, 92, 58], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `decimals` (0x313ce567) function + pub fn decimals( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 60, 229, 103], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `gasPrice` (0xfe173b97) function + pub fn gas_price( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([254, 23, 59, 151], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getL1Fee` (0x49948e0e) function + pub fn get_l1_fee( + &self, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([73, 148, 142, 14], data) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getL1GasUsed` (0xde26c4a1) function + pub fn get_l1_gas_used( + &self, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([222, 38, 196, 161], data) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `l1BaseFee` (0x519b4bd3) function + pub fn l_1_base_fee( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([81, 155, 75, 211], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `overhead` (0x0c18c162) function + pub fn overhead( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([12, 24, 193, 98], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `scalar` (0xf45e65d8) function + pub fn scalar( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([244, 94, 101, 216], ()) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for GasPriceOracle { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `DECIMALS` function with signature `DECIMALS()` and selector `0x2e0f2625` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "DECIMALS", abi = "DECIMALS()")] + pub struct DECIMALSCall; + ///Container type for all input parameters for the `baseFee` function with signature `baseFee()` and selector `0x6ef25c3a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "baseFee", abi = "baseFee()")] + pub struct BaseFeeCall; + ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "decimals", abi = "decimals()")] + pub struct decimalsCall; + ///Container type for all input parameters for the `gasPrice` function with signature `gasPrice()` and selector `0xfe173b97` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "gasPrice", abi = "gasPrice()")] + pub struct GasPriceCall; + ///Container type for all input parameters for the `getL1Fee` function with signature `getL1Fee(bytes)` and selector `0x49948e0e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getL1Fee", abi = "getL1Fee(bytes)")] + pub struct GetL1FeeCall { + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getL1GasUsed` function with signature `getL1GasUsed(bytes)` and selector `0xde26c4a1` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getL1GasUsed", abi = "getL1GasUsed(bytes)")] + pub struct GetL1GasUsedCall { + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `l1BaseFee` function with signature `l1BaseFee()` and selector `0x519b4bd3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "l1BaseFee", abi = "l1BaseFee()")] + pub struct L1BaseFeeCall; + ///Container type for all input parameters for the `overhead` function with signature `overhead()` and selector `0x0c18c162` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "overhead", abi = "overhead()")] + pub struct OverheadCall; + ///Container type for all input parameters for the `scalar` function with signature `scalar()` and selector `0xf45e65d8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "scalar", abi = "scalar()")] + pub struct ScalarCall; + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum GasPriceOracleCalls { + DECIMALS(DECIMALSCall), + BaseFee(BaseFeeCall), + decimals(decimalsCall), + GasPrice(GasPriceCall), + GetL1Fee(GetL1FeeCall), + GetL1GasUsed(GetL1GasUsedCall), + L1BaseFee(L1BaseFeeCall), + Overhead(OverheadCall), + Scalar(ScalarCall), + } + impl ::ethers::core::abi::AbiDecode for GasPriceOracleCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::DECIMALS(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::BaseFee(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::decimals(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GasPrice(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetL1Fee(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetL1GasUsed(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::L1BaseFee(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Overhead(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Scalar(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for GasPriceOracleCalls { + fn encode(self) -> Vec { + match self { + Self::DECIMALS(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BaseFee(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::decimals(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GasPrice(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetL1Fee(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetL1GasUsed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::L1BaseFee(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Overhead(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Scalar(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for GasPriceOracleCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DECIMALS(element) => ::core::fmt::Display::fmt(element, f), + Self::BaseFee(element) => ::core::fmt::Display::fmt(element, f), + Self::decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::GasPrice(element) => ::core::fmt::Display::fmt(element, f), + Self::GetL1Fee(element) => ::core::fmt::Display::fmt(element, f), + Self::GetL1GasUsed(element) => ::core::fmt::Display::fmt(element, f), + Self::L1BaseFee(element) => ::core::fmt::Display::fmt(element, f), + Self::Overhead(element) => ::core::fmt::Display::fmt(element, f), + Self::Scalar(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: DECIMALSCall) -> Self { + Self::DECIMALS(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: BaseFeeCall) -> Self { + Self::BaseFee(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: decimalsCall) -> Self { + Self::decimals(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: GasPriceCall) -> Self { + Self::GasPrice(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: GetL1FeeCall) -> Self { + Self::GetL1Fee(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: GetL1GasUsedCall) -> Self { + Self::GetL1GasUsed(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: L1BaseFeeCall) -> Self { + Self::L1BaseFee(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: OverheadCall) -> Self { + Self::Overhead(value) + } + } + impl ::core::convert::From for GasPriceOracleCalls { + fn from(value: ScalarCall) -> Self { + Self::Scalar(value) + } + } + ///Container type for all return fields from the `DECIMALS` function with signature `DECIMALS()` and selector `0x2e0f2625` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct DECIMALSReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `baseFee` function with signature `baseFee()` and selector `0x6ef25c3a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct BaseFeeReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct decimalsReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `gasPrice` function with signature `gasPrice()` and selector `0xfe173b97` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GasPriceReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getL1Fee` function with signature `getL1Fee(bytes)` and selector `0x49948e0e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetL1FeeReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getL1GasUsed` function with signature `getL1GasUsed(bytes)` and selector `0xde26c4a1` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetL1GasUsedReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `l1BaseFee` function with signature `l1BaseFee()` and selector `0x519b4bd3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct L1BaseFeeReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `overhead` function with signature `overhead()` and selector `0x0c18c162` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OverheadReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `scalar` function with signature `scalar()` and selector `0xf45e65d8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ScalarReturn(pub ::ethers::core::types::U256); +} diff --git a/crates/types/src/contracts/get_code_hashes.rs b/crates/types/src/contracts/get_code_hashes.rs new file mode 100644 index 000000000..85826c96e --- /dev/null +++ b/crates/types/src/contracts/get_code_hashes.rs @@ -0,0 +1,219 @@ +pub use get_code_hashes::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod get_code_hashes { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("addresses"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Address)), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address[]")), + } + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("getCodeHashes"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getCodeHashes"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("addresses"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Address)), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address[]")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("CodeHashesResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("CodeHashesResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("hash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], } + ], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static GETCODEHASHES_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xB08\x03\x80a\x02\xB0\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01jV[a\08\x81a\0]V[`@Qc\t\x1C\xD0\x05`\xE0\x1B\x81R`\x04\x01a\0T\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\0yWa\0ya\x018V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\xA2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x01\x04W\x83\x81\x81Q\x81\x10a\0\xC3Wa\0\xC3a\x02.V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16?\x82\x82\x81Q\x81\x10a\0\xE7Wa\0\xE7a\x02.V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\0\xFC\x81a\x02DV[\x91PPa\0\xA8V[P`\0\x81`@Q` \x01a\x01\x18\x91\x90a\x02kV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01eW`\0\x80\xFD[\x91\x90PV[`\0` \x80\x83\x85\x03\x12\x15a\x01}W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x01\x94W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x01\xA8W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x01\xBAWa\x01\xBAa\x018V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xDFWa\x01\xDFa\x018V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x01\xFDW`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02\"Wa\x02\x13\x85a\x01NV[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x02\x02V[\x98\x97PPPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x02dWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x02\xA3W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02\x87V[P\x90\x96\x95PPPPPPV\xFE"; + /// The bytecode of the contract. + pub static GETCODEHASHES_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c{4\xB6!\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01cV[a\0UV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0\x80\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\0rWa\0ra\x011V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\0\x9BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\0\xFDW\x83\x81\x81Q\x81\x10a\0\xBCWa\0\xBCa\x02(V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16?\x82\x82\x81Q\x81\x10a\0\xE0Wa\0\xE0a\x02(V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\0\xF5\x81a\x02>V[\x91PPa\0\xA1V[P`\0\x81`@Q` \x01a\x01\x11\x91\x90a\x02eV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01^W`\0\x80\xFD[\x91\x90PV[`\0` \x80\x83\x85\x03\x12\x15a\x01vW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\x8EW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x01\xA2W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\xB4Wa\x01\xB4a\x011V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x01\xD9Wa\x01\xD9a\x011V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x01\xF7W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x02\x1CWa\x02\r\x85a\x01GV[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x01\xFCV[\x98\x97PPPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x02^WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x02\x9DW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02\x81V[P\x90\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 *\xD8\xA0$2\xFER\x19\0L\xEA e*(\x04t\x9E\\\xD3\x0EQ8\xB7\xF0\x85]\xF2\xD6Z\x05YdsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static GETCODEHASHES_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct GetCodeHashes(::ethers::contract::Contract); + impl ::core::clone::Clone for GetCodeHashes { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for GetCodeHashes { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for GetCodeHashes { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for GetCodeHashes { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(GetCodeHashes)) + .field(&self.address()) + .finish() + } + } + impl GetCodeHashes { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + GETCODEHASHES_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + GETCODEHASHES_ABI.clone(), + GETCODEHASHES_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `getCodeHashes` (0x7b34b621) function + pub fn get_code_hashes( + &self, + addresses: ::std::vec::Vec<::ethers::core::types::Address>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([123, 52, 182, 33], addresses) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for GetCodeHashes { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `CodeHashesResult` with signature `CodeHashesResult(bytes32)` and selector `0x091cd005` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "CodeHashesResult", abi = "CodeHashesResult(bytes32)")] + pub struct CodeHashesResult { + pub hash: [u8; 32], + } + ///Container type for all input parameters for the `getCodeHashes` function with signature `getCodeHashes(address[])` and selector `0x7b34b621` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getCodeHashes", abi = "getCodeHashes(address[])")] + pub struct GetCodeHashesCall { + pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, + } + ///Container type for all return fields from the `getCodeHashes` function with signature `getCodeHashes(address[])` and selector `0x7b34b621` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetCodeHashesReturn(pub [u8; 32]); +} diff --git a/crates/types/src/contracts/get_gas_used.rs b/crates/types/src/contracts/get_gas_used.rs new file mode 100644 index 000000000..12b7c91d2 --- /dev/null +++ b/crates/types/src/contracts/get_gas_used.rs @@ -0,0 +1,262 @@ +pub use get_gas_used::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod get_gas_used { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("target"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("value"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + } + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("getGas"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getGas"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("target"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("value"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("GasUsedResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("GasUsedResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("gasUsed"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("success"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("result"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], } + ], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static GETGASUSED_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\x8A8\x03\x80a\x02\x8A\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01,V[`\0\x80\x80a\0>\x86\x86\x86a\0lV[\x92P\x92P\x92P\x82\x82\x82`@QcE\xC8\xB8\x81`\xE1\x1B\x81R`\x04\x01a\0c\x93\x92\x91\x90a\x02\x03V[`@Q\x80\x91\x03\x90\xFD[`\0\x80```\0Z\x90P`\0\x80\x88`\x01`\x01`\xA0\x1B\x03\x16\x88\x88`@Qa\0\x92\x91\x90a\x02FV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\0\xCFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\0\xD4V[``\x91P[P\x91P\x91PZa\0\xE4\x90\x84a\x02bV[\x99\x91\x98P\x96P\x94PPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x01#W\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\x0BV[PP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01AW`\0\x80\xFD[\x83Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01XW`\0\x80\xFD[` \x85\x01Q`@\x86\x01Q\x91\x94P\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x01|W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01\x90W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x01\xA2Wa\x01\xA2a\0\xF2V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01\xCAWa\x01\xCAa\0\xF2V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x01\xE3W`\0\x80\xFD[a\x01\xF4\x83` \x83\x01` \x88\x01a\x01\x08V[\x80\x95PPPPPP\x92P\x92P\x92V[\x83\x81R\x82\x15\x15` \x82\x01R```@\x82\x01R`\0\x82Q\x80``\x84\x01Ra\x020\x81`\x80\x85\x01` \x87\x01a\x01\x08V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`\x80\x01\x94\x93PPPPV[`\0\x82Qa\x02X\x81\x84` \x87\x01a\x01\x08V[\x91\x90\x91\x01\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\x02\x83WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE"; + /// The bytecode of the contract. + pub static GETGASUSED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80ciOq-\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\0\xF7V[a\0[V[`@Qa\0R\x93\x92\x91\x90a\x01\xF4V[`@Q\x80\x91\x03\x90\xF3[`\0\x80```\0Z\x90P`\0\x80\x88`\x01`\x01`\xA0\x1B\x03\x16\x88\x88`@Qa\0\x81\x91\x90a\x027V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\0\xBEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\0\xC3V[``\x91P[P\x91P\x91PZa\0\xD3\x90\x84a\x02SV[\x99\x91\x98P\x96P\x94PPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\x0CW`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01#W`\0\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x01[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01mWa\x01ma\0\xE1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01\x95Wa\x01\x95a\0\xE1V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x01\xAEW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x01\xEBW\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xD3V[PP`\0\x91\x01RV[\x83\x81R\x82\x15\x15` \x82\x01R```@\x82\x01R`\0\x82Q\x80``\x84\x01Ra\x02!\x81`\x80\x85\x01` \x87\x01a\x01\xD0V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`\x80\x01\x94\x93PPPPV[`\0\x82Qa\x02I\x81\x84` \x87\x01a\x01\xD0V[\x91\x90\x91\x01\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\x02tWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x9A\x0Bp7.\x82\xEE\xF6\xE5\xDCE\xABr\xDC \xBD~`(\x146\x9F_\x90\xBE\xE3\x12\x907\xE3\xC2\x9FdsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static GETGASUSED_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct GetGasUsed(::ethers::contract::Contract); + impl ::core::clone::Clone for GetGasUsed { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for GetGasUsed { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for GetGasUsed { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for GetGasUsed { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(GetGasUsed)).field(&self.address()).finish() + } + } + impl GetGasUsed { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + GETGASUSED_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + GETGASUSED_ABI.clone(), + GETGASUSED_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `getGas` (0x694f712d) function + pub fn get_gas( + &self, + target: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + (::ethers::core::types::U256, bool, ::ethers::core::types::Bytes), + > { + self.0 + .method_hash([105, 79, 113, 45], (target, value, data)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for GetGasUsed { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `GasUsedResult` with signature `GasUsedResult(uint256,bool,bytes)` and selector `0x8b917102` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "GasUsedResult", abi = "GasUsedResult(uint256,bool,bytes)")] + pub struct GasUsedResult { + pub gas_used: ::ethers::core::types::U256, + pub success: bool, + pub result: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getGas` function with signature `getGas(address,uint256,bytes)` and selector `0x694f712d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getGas", abi = "getGas(address,uint256,bytes)")] + pub struct GetGasCall { + pub target: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all return fields from the `getGas` function with signature `getGas(address,uint256,bytes)` and selector `0x694f712d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetGasReturn( + pub ::ethers::core::types::U256, + pub bool, + pub ::ethers::core::types::Bytes, + ); +} diff --git a/crates/types/src/contracts/i_aggregator.rs b/crates/types/src/contracts/i_aggregator.rs new file mode 100644 index 000000000..4a66bc5a1 --- /dev/null +++ b/crates/types/src/contracts/i_aggregator.rs @@ -0,0 +1,356 @@ +pub use i_aggregator::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod i_aggregator { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("aggregateSignatures"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("aggregateSignatures"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOps"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation[]")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("aggregatedSignature"), + kind : ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("validateSignatures"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("validateSignatures"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOps"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("signature"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("validateUserOpSignature"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("validateUserOpSignature"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("sigForUserOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static IAGGREGATOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + pub struct IAggregator(::ethers::contract::Contract); + impl ::core::clone::Clone for IAggregator { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IAggregator { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IAggregator { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IAggregator { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IAggregator)) + .field(&self.address()) + .finish() + } + } + impl IAggregator { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + IAGGREGATOR_ABI.clone(), + client, + ), + ) + } + ///Calls the contract's `aggregateSignatures` (0x275e2d79) function + pub fn aggregate_signatures( + &self, + user_ops: ::std::vec::Vec, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Bytes, + > { + self.0 + .method_hash([39, 94, 45, 121], user_ops) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateSignatures` (0xe3563a4f) function + pub fn validate_signatures( + &self, + user_ops: ::std::vec::Vec, + signature: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([227, 86, 58, 79], (user_ops, signature)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateUserOpSignature` (0x64c530cd) function + pub fn validate_user_op_signature( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Bytes, + > { + self.0 + .method_hash([100, 197, 48, 205], (user_op,)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for IAggregator { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `aggregateSignatures` function with signature `aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])` and selector `0x275e2d79` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "aggregateSignatures", + abi = "aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])" + )] + pub struct AggregateSignaturesCall { + pub user_ops: ::std::vec::Vec, + } + ///Container type for all input parameters for the `validateSignatures` function with signature `validateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes)` and selector `0xe3563a4f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "validateSignatures", + abi = "validateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes)" + )] + pub struct ValidateSignaturesCall { + pub user_ops: ::std::vec::Vec, + pub signature: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `validateUserOpSignature` function with signature `validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x64c530cd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "validateUserOpSignature", + abi = "validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct ValidateUserOpSignatureCall { + pub user_op: UserOperation, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum IAggregatorCalls { + AggregateSignatures(AggregateSignaturesCall), + ValidateSignatures(ValidateSignaturesCall), + ValidateUserOpSignature(ValidateUserOpSignatureCall), + } + impl ::ethers::core::abi::AbiDecode for IAggregatorCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::AggregateSignatures(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ValidateSignatures(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ValidateUserOpSignature(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IAggregatorCalls { + fn encode(self) -> Vec { + match self { + Self::AggregateSignatures(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSignatures(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateUserOpSignature(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for IAggregatorCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AggregateSignatures(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateSignatures(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidateUserOpSignature(element) => { + ::core::fmt::Display::fmt(element, f) + } + } + } + } + impl ::core::convert::From for IAggregatorCalls { + fn from(value: AggregateSignaturesCall) -> Self { + Self::AggregateSignatures(value) + } + } + impl ::core::convert::From for IAggregatorCalls { + fn from(value: ValidateSignaturesCall) -> Self { + Self::ValidateSignatures(value) + } + } + impl ::core::convert::From for IAggregatorCalls { + fn from(value: ValidateUserOpSignatureCall) -> Self { + Self::ValidateUserOpSignature(value) + } + } + ///Container type for all return fields from the `aggregateSignatures` function with signature `aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])` and selector `0x275e2d79` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct AggregateSignaturesReturn { + pub aggregated_signature: ::ethers::core::types::Bytes, + } + ///Container type for all return fields from the `validateUserOpSignature` function with signature `validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x64c530cd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ValidateUserOpSignatureReturn { + pub sig_for_user_op: ::ethers::core::types::Bytes, + } +} diff --git a/crates/types/src/contracts/i_entry_point.rs b/crates/types/src/contracts/i_entry_point.rs new file mode 100644 index 000000000..3452b6cdf --- /dev/null +++ b/crates/types/src/contracts/i_entry_point.rs @@ -0,0 +1,1935 @@ +pub use i_entry_point::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod i_entry_point { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("addStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("addStake"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("_unstakeDelaySec"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint32")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("balanceOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("balanceOf"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("depositTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("depositTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getDepositInfo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getDepositInfo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("info"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.DepositInfo")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getSenderAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getSenderAddress"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("initCode"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getUserOpHash"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getUserOpHash"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("handleAggregatedOps"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("handleAggregatedOps"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("opsPerAggregator"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.UserOpsPerAggregator[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("beneficiary"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("handleOps"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("handleOps"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("ops"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]))), internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("beneficiary"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateHandleOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("simulateHandleOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("op"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("target"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("targetCallData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateValidation"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("simulateValidation"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("unlockStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("unlockStake"), inputs : + ::std::vec![], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawStake"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAmount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AccountDeployed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("AccountDeployed"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + indexed : true, }, ::ethers::core::abi::ethabi::EventParam { name + : ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("factory"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("paymaster"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Deposited"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("Deposited"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("totalDeposit"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignatureAggregatorChanged"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("SignatureAggregatorChanged"), + inputs : ::std::vec![::ethers::core::abi::ethabi::EventParam { + name : ::std::borrow::ToOwned::to_owned("aggregator"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeLocked"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("StakeLocked"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("totalStaked"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeUnlocked"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("StakeUnlocked"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("withdrawTime"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("UserOperationEvent"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("UserOperationEvent"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + indexed : true, }, ::ethers::core::abi::ethabi::EventParam { name + : ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("paymaster"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("nonce"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("success"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, indexed : false, }, + ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("actualGasCost"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("actualGasUsed"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("UserOperationRevertReason"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("UserOperationRevertReason"), + inputs : ::std::vec![::ethers::core::abi::ethabi::EventParam { + name : ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + indexed : true, }, ::ethers::core::abi::ethabi::EventParam { name + : ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("nonce"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("revertReason"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, indexed : false, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Withdrawn"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("Withdrawn"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("account"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), indexed : + false, }], anonymous : false, } + ], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("ExecutionResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("ExecutionResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("preOpGas"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paid"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validAfter"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validUntil"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("targetSuccess"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("targetResult"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("FailedOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("FailedOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("opIndex"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("reason"), kind : + ::ethers::core::abi::ethabi::ParamType::String, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("string")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SenderAddressResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("SenderAddressResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignatureValidationFailed"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("SignatureValidationFailed"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("aggregator"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidationResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("ValidationResult"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("returnInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.ReturnInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("senderInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("factoryInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paymasterInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }], } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidationResultWithAggregation"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { name : + ::std::borrow::ToOwned::to_owned("ValidationResultWithAggregation"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("returnInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.ReturnInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("senderInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("factoryInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paymasterInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IStakeManager.StakeInfo")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("aggregatorInfo"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize)])]), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct IEntryPoint.AggregatorStakeInfo")), + }], } + ], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static IENTRYPOINT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + pub struct IEntryPoint(::ethers::contract::Contract); + impl ::core::clone::Clone for IEntryPoint { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IEntryPoint { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IEntryPoint { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IEntryPoint { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IEntryPoint)) + .field(&self.address()) + .finish() + } + } + impl IEntryPoint { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + IENTRYPOINT_ABI.clone(), + client, + ), + ) + } + ///Calls the contract's `addStake` (0x0396cb60) function + pub fn add_stake( + &self, + unstake_delay_sec: u32, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([3, 150, 203, 96], unstake_delay_sec) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `depositTo` (0xb760faf9) function + pub fn deposit_to( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([183, 96, 250, 249], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getDepositInfo` (0x5287ce12) function + pub fn get_deposit_info( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 135, 206, 18], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getSenderAddress` (0x9b249f69) function + pub fn get_sender_address( + &self, + init_code: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([155, 36, 159, 105], init_code) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getUserOpHash` (0xa6193531) function + pub fn get_user_op_hash( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([166, 25, 53, 49], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `handleAggregatedOps` (0x4b1d7cf5) function + pub fn handle_aggregated_ops( + &self, + ops_per_aggregator: ::std::vec::Vec, + beneficiary: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([75, 29, 124, 245], (ops_per_aggregator, beneficiary)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `handleOps` (0x1fad948c) function + pub fn handle_ops( + &self, + ops: ::std::vec::Vec, + beneficiary: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([31, 173, 148, 140], (ops, beneficiary)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `simulateHandleOp` (0xd6383f94) function + pub fn simulate_handle_op( + &self, + op: UserOperation, + target: ::ethers::core::types::Address, + target_call_data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([214, 56, 63, 148], (op, target, target_call_data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `simulateValidation` (0xee219423) function + pub fn simulate_validation( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([238, 33, 148, 35], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `unlockStake` (0xbb9fe6bf) function + pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([187, 159, 230, 191], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawStake` (0xc23a5cea) function + pub fn withdraw_stake( + &self, + withdraw_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([194, 58, 92, 234], withdraw_address) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawTo` (0x205c2878) function + pub fn withdraw_to( + &self, + withdraw_address: ::ethers::core::types::Address, + withdraw_amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 92, 40, 120], (withdraw_address, withdraw_amount)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AccountDeployed` event + pub fn account_deployed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + AccountDeployedFilter, + > { + self.0.event() + } + ///Gets the contract's `Deposited` event + pub fn deposited_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + DepositedFilter, + > { + self.0.event() + } + ///Gets the contract's `SignatureAggregatorChanged` event + pub fn signature_aggregator_changed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + SignatureAggregatorChangedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeLocked` event + pub fn stake_locked_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeLockedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeUnlocked` event + pub fn stake_unlocked_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeUnlockedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeWithdrawn` event + pub fn stake_withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeWithdrawnFilter, + > { + self.0.event() + } + ///Gets the contract's `UserOperationEvent` event + pub fn user_operation_event_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + UserOperationEventFilter, + > { + self.0.event() + } + ///Gets the contract's `UserOperationRevertReason` event + pub fn user_operation_revert_reason_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + UserOperationRevertReasonFilter, + > { + self.0.event() + } + ///Gets the contract's `Withdrawn` event + pub fn withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + WithdrawnFilter, + > { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + IEntryPointEvents, + > { + self.0.event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for IEntryPoint { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `ExecutionResult` with signature `ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)` and selector `0x8b7ac980` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ExecutionResult", + abi = "ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)" + )] + pub struct ExecutionResult { + pub pre_op_gas: ::ethers::core::types::U256, + pub paid: ::ethers::core::types::U256, + pub valid_after: u64, + pub valid_until: u64, + pub target_success: bool, + pub target_result: ::ethers::core::types::Bytes, + } + ///Custom Error type `FailedOp` with signature `FailedOp(uint256,string)` and selector `0x220266b6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "FailedOp", abi = "FailedOp(uint256,string)")] + pub struct FailedOp { + pub op_index: ::ethers::core::types::U256, + pub reason: ::std::string::String, + } + ///Custom Error type `SenderAddressResult` with signature `SenderAddressResult(address)` and selector `0x6ca7b806` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "SenderAddressResult", abi = "SenderAddressResult(address)")] + pub struct SenderAddressResult { + pub sender: ::ethers::core::types::Address, + } + ///Custom Error type `SignatureValidationFailed` with signature `SignatureValidationFailed(address)` and selector `0x86a9f750` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "SignatureValidationFailed", + abi = "SignatureValidationFailed(address)" + )] + pub struct SignatureValidationFailed { + pub aggregator: ::ethers::core::types::Address, + } + ///Custom Error type `ValidationResult` with signature `ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0xe0cff05f` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ValidationResult", + abi = "ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))" + )] + pub struct ValidationResult { + pub return_info: ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + bool, + u64, + u64, + ::ethers::core::types::Bytes, + ), + pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + } + ///Custom Error type `ValidationResultWithAggregation` with signature `ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))` and selector `0xfaecb4e4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ValidationResultWithAggregation", + abi = "ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))" + )] + pub struct ValidationResultWithAggregation { + pub return_info: ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + bool, + u64, + u64, + ::ethers::core::types::Bytes, + ), + pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub aggregator_info: ( + ::ethers::core::types::Address, + (::ethers::core::types::U256, ::ethers::core::types::U256), + ), + } + ///Container type for all of the contract's custom errors + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum IEntryPointErrors { + ExecutionResult(ExecutionResult), + FailedOp(FailedOp), + SenderAddressResult(SenderAddressResult), + SignatureValidationFailed(SignatureValidationFailed), + ValidationResult(ValidationResult), + ValidationResultWithAggregation(ValidationResultWithAggregation), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for IEntryPointErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( + data, + ) { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ExecutionResult(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::FailedOp(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::SenderAddressResult(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SignatureValidationFailed(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ValidationResult(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ValidationResultWithAggregation(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IEntryPointErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::ExecutionResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::FailedOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SenderAddressResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SignatureValidationFailed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidationResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidationResultWithAggregation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for IEntryPointErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for IEntryPointErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ExecutionResult(element) => ::core::fmt::Display::fmt(element, f), + Self::FailedOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SenderAddressResult(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::SignatureValidationFailed(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ValidationResult(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidationResultWithAggregation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for IEntryPointErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: ExecutionResult) -> Self { + Self::ExecutionResult(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: FailedOp) -> Self { + Self::FailedOp(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: SenderAddressResult) -> Self { + Self::SenderAddressResult(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: SignatureValidationFailed) -> Self { + Self::SignatureValidationFailed(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: ValidationResult) -> Self { + Self::ValidationResult(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: ValidationResultWithAggregation) -> Self { + Self::ValidationResultWithAggregation(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "AccountDeployed", + abi = "AccountDeployed(bytes32,address,address,address)" + )] + pub struct AccountDeployedFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + pub factory: ::ethers::core::types::Address, + pub paymaster: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Deposited", abi = "Deposited(address,uint256)")] + pub struct DepositedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_deposit: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "SignatureAggregatorChanged", + abi = "SignatureAggregatorChanged(address)" + )] + pub struct SignatureAggregatorChangedFilter { + #[ethevent(indexed)] + pub aggregator: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeLocked", abi = "StakeLocked(address,uint256,uint256)")] + pub struct StakeLockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_staked: ::ethers::core::types::U256, + pub unstake_delay_sec: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeUnlocked", abi = "StakeUnlocked(address,uint256)")] + pub struct StakeUnlockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_time: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeWithdrawn", abi = "StakeWithdrawn(address,address,uint256)")] + pub struct StakeWithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "UserOperationEvent", + abi = "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)" + )] + pub struct UserOperationEventFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub paymaster: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub success: bool, + pub actual_gas_cost: ::ethers::core::types::U256, + pub actual_gas_used: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "UserOperationRevertReason", + abi = "UserOperationRevertReason(bytes32,address,uint256,bytes)" + )] + pub struct UserOperationRevertReasonFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub revert_reason: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,address,uint256)")] + pub struct WithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + ///Container type for all of the contract's events + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum IEntryPointEvents { + AccountDeployedFilter(AccountDeployedFilter), + DepositedFilter(DepositedFilter), + SignatureAggregatorChangedFilter(SignatureAggregatorChangedFilter), + StakeLockedFilter(StakeLockedFilter), + StakeUnlockedFilter(StakeUnlockedFilter), + StakeWithdrawnFilter(StakeWithdrawnFilter), + UserOperationEventFilter(UserOperationEventFilter), + UserOperationRevertReasonFilter(UserOperationRevertReasonFilter), + WithdrawnFilter(WithdrawnFilter), + } + impl ::ethers::contract::EthLogDecode for IEntryPointEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AccountDeployedFilter::decode_log(log) { + return Ok(IEntryPointEvents::AccountDeployedFilter(decoded)); + } + if let Ok(decoded) = DepositedFilter::decode_log(log) { + return Ok(IEntryPointEvents::DepositedFilter(decoded)); + } + if let Ok(decoded) = SignatureAggregatorChangedFilter::decode_log(log) { + return Ok(IEntryPointEvents::SignatureAggregatorChangedFilter(decoded)); + } + if let Ok(decoded) = StakeLockedFilter::decode_log(log) { + return Ok(IEntryPointEvents::StakeLockedFilter(decoded)); + } + if let Ok(decoded) = StakeUnlockedFilter::decode_log(log) { + return Ok(IEntryPointEvents::StakeUnlockedFilter(decoded)); + } + if let Ok(decoded) = StakeWithdrawnFilter::decode_log(log) { + return Ok(IEntryPointEvents::StakeWithdrawnFilter(decoded)); + } + if let Ok(decoded) = UserOperationEventFilter::decode_log(log) { + return Ok(IEntryPointEvents::UserOperationEventFilter(decoded)); + } + if let Ok(decoded) = UserOperationRevertReasonFilter::decode_log(log) { + return Ok(IEntryPointEvents::UserOperationRevertReasonFilter(decoded)); + } + if let Ok(decoded) = WithdrawnFilter::decode_log(log) { + return Ok(IEntryPointEvents::WithdrawnFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for IEntryPointEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AccountDeployedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::DepositedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SignatureAggregatorChangedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeLockedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeUnlockedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeWithdrawnFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UserOperationEventFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UserOperationRevertReasonFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: AccountDeployedFilter) -> Self { + Self::AccountDeployedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: DepositedFilter) -> Self { + Self::DepositedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: SignatureAggregatorChangedFilter) -> Self { + Self::SignatureAggregatorChangedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: StakeLockedFilter) -> Self { + Self::StakeLockedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: StakeUnlockedFilter) -> Self { + Self::StakeUnlockedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: StakeWithdrawnFilter) -> Self { + Self::StakeWithdrawnFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: UserOperationEventFilter) -> Self { + Self::UserOperationEventFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: UserOperationRevertReasonFilter) -> Self { + Self::UserOperationRevertReasonFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: WithdrawnFilter) -> Self { + Self::WithdrawnFilter(value) + } + } + ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "addStake", abi = "addStake(uint32)")] + pub struct AddStakeCall { + pub unstake_delay_sec: u32, + } + ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "depositTo", abi = "depositTo(address)")] + pub struct DepositToCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getDepositInfo", abi = "getDepositInfo(address)")] + pub struct GetDepositInfoCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getSenderAddress` function with signature `getSenderAddress(bytes)` and selector `0x9b249f69` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getSenderAddress", abi = "getSenderAddress(bytes)")] + pub struct GetSenderAddressCall { + pub init_code: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "getUserOpHash", + abi = "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct GetUserOpHashCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `handleAggregatedOps` function with signature `handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)` and selector `0x4b1d7cf5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "handleAggregatedOps", + abi = "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)" + )] + pub struct HandleAggregatedOpsCall { + pub ops_per_aggregator: ::std::vec::Vec, + pub beneficiary: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `handleOps` function with signature `handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)` and selector `0x1fad948c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "handleOps", + abi = "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)" + )] + pub struct HandleOpsCall { + pub ops: ::std::vec::Vec, + pub beneficiary: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `simulateHandleOp` function with signature `simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)` and selector `0xd6383f94` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "simulateHandleOp", + abi = "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)" + )] + pub struct SimulateHandleOpCall { + pub op: UserOperation, + pub target: ::ethers::core::types::Address, + pub target_call_data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `simulateValidation` function with signature `simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xee219423` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "simulateValidation", + abi = "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct SimulateValidationCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "unlockStake", abi = "unlockStake()")] + pub struct UnlockStakeCall; + ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] + pub struct WithdrawStakeCall { + pub withdraw_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] + pub struct WithdrawToCall { + pub withdraw_address: ::ethers::core::types::Address, + pub withdraw_amount: ::ethers::core::types::U256, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum IEntryPointCalls { + AddStake(AddStakeCall), + BalanceOf(BalanceOfCall), + DepositTo(DepositToCall), + GetDepositInfo(GetDepositInfoCall), + GetSenderAddress(GetSenderAddressCall), + GetUserOpHash(GetUserOpHashCall), + HandleAggregatedOps(HandleAggregatedOpsCall), + HandleOps(HandleOpsCall), + SimulateHandleOp(SimulateHandleOpCall), + SimulateValidation(SimulateValidationCall), + UnlockStake(UnlockStakeCall), + WithdrawStake(WithdrawStakeCall), + WithdrawTo(WithdrawToCall), + } + impl ::ethers::core::abi::AbiDecode for IEntryPointCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::AddStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::DepositTo(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetDepositInfo(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::GetSenderAddress(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetUserOpHash(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::HandleAggregatedOps(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::HandleOps(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SimulateHandleOp(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::SimulateValidation(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::UnlockStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::WithdrawStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::WithdrawTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IEntryPointCalls { + fn encode(self) -> Vec { + match self { + Self::AddStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BalanceOf(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DepositTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetDepositInfo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetSenderAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetUserOpHash(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::HandleAggregatedOps(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::HandleOps(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateHandleOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SimulateValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UnlockStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for IEntryPointCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), + Self::GetDepositInfo(element) => ::core::fmt::Display::fmt(element, f), + Self::GetSenderAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::GetUserOpHash(element) => ::core::fmt::Display::fmt(element, f), + Self::HandleAggregatedOps(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::HandleOps(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateHandleOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateValidation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: AddStakeCall) -> Self { + Self::AddStake(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: DepositToCall) -> Self { + Self::DepositTo(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetDepositInfoCall) -> Self { + Self::GetDepositInfo(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetSenderAddressCall) -> Self { + Self::GetSenderAddress(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetUserOpHashCall) -> Self { + Self::GetUserOpHash(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: HandleAggregatedOpsCall) -> Self { + Self::HandleAggregatedOps(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: HandleOpsCall) -> Self { + Self::HandleOps(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: SimulateHandleOpCall) -> Self { + Self::SimulateHandleOp(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: SimulateValidationCall) -> Self { + Self::SimulateValidation(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: UnlockStakeCall) -> Self { + Self::UnlockStake(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: WithdrawStakeCall) -> Self { + Self::WithdrawStake(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: WithdrawToCall) -> Self { + Self::WithdrawTo(value) + } + } + ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct BalanceOfReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetDepositInfoReturn { + pub info: DepositInfo, + } + ///Container type for all return fields from the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetUserOpHashReturn(pub [u8; 32]); +} diff --git a/crates/types/src/contracts/mod.rs b/crates/types/src/contracts/mod.rs new file mode 100644 index 000000000..c3de5ff2e --- /dev/null +++ b/crates/types/src/contracts/mod.rs @@ -0,0 +1,17 @@ +#![allow(clippy::all)] +//! This module contains abigen! generated bindings for solidity contracts. +//! This is autogenerated code. +//! Do not manually edit these files. +//! These files may be overwritten by the codegen system at any time. +pub mod call_gas_estimation_proxy; +pub mod entry_point; +pub mod gas_price_oracle; +pub mod get_code_hashes; +pub mod get_gas_used; +pub mod i_aggregator; +pub mod i_entry_point; +pub mod node_interface; +pub mod shared_types; +pub mod simple_account; +pub mod simple_account_factory; +pub mod verifying_paymaster; diff --git a/crates/types/src/contracts/node_interface.rs b/crates/types/src/contracts/node_interface.rs new file mode 100644 index 000000000..f7f6cded7 --- /dev/null +++ b/crates/types/src/contracts/node_interface.rs @@ -0,0 +1,886 @@ +pub use node_interface::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod node_interface { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("constructOutboxProof"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("constructOutboxProof"), inputs + : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("size"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("leaf"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("send"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("root"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("proof"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize))), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32[]")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("estimateRetryableTicket"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("estimateRetryableTicket"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("deposit"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("to"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l2CallValue"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("excessFeeRefundAddress"), kind + : ::ethers::core::abi::ethabi::ParamType::Address, internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("callValueRefundAddress"), kind + : ::ethers::core::abi::ethabi::ParamType::Address, internal_type + : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("findBatchContainingBlock"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("findBatchContainingBlock"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("blockNum"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("batch"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("gasEstimateComponents"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("gasEstimateComponents"), inputs + : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("to"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("contractCreation"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("gasEstimate"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("gasEstimateForL1"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("baseFee"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l1BaseFeeEstimate"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("gasEstimateL1Component"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("gasEstimateL1Component"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("to"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("contractCreation"), kind : + ::ethers::core::abi::ethabi::ParamType::Bool, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bool")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("gasEstimateForL1"), kind + : ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("baseFee"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l1BaseFeeEstimate"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getL1Confirmations"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getL1Confirmations"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("blockHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("confirmations"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("legacyLookupMessageBatchProof"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("legacyLookupMessageBatchProof"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("batchNum"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("index"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint64")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("proof"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize))), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("path"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l2Sender"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l1Dest"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l2Block"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("l1Block"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("timestamp"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("calldataForL1"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("nitroGenesisBlock"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("nitroGenesisBlock"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("number"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Pure, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static NODEINTERFACE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + pub struct NodeInterface(::ethers::contract::Contract); + impl ::core::clone::Clone for NodeInterface { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for NodeInterface { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for NodeInterface { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for NodeInterface { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(NodeInterface)) + .field(&self.address()) + .finish() + } + } + impl NodeInterface { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + NODEINTERFACE_ABI.clone(), + client, + ), + ) + } + ///Calls the contract's `constructOutboxProof` (0x42696350) function + pub fn construct_outbox_proof( + &self, + size: u64, + leaf: u64, + ) -> ::ethers::contract::builders::ContractCall< + M, + ([u8; 32], [u8; 32], ::std::vec::Vec<[u8; 32]>), + > { + self.0 + .method_hash([66, 105, 99, 80], (size, leaf)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `estimateRetryableTicket` (0xc3dc5879) function + pub fn estimate_retryable_ticket( + &self, + sender: ::ethers::core::types::Address, + deposit: ::ethers::core::types::U256, + to: ::ethers::core::types::Address, + l_2_call_value: ::ethers::core::types::U256, + excess_fee_refund_address: ::ethers::core::types::Address, + call_value_refund_address: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [195, 220, 88, 121], + ( + sender, + deposit, + to, + l_2_call_value, + excess_fee_refund_address, + call_value_refund_address, + data, + ), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `findBatchContainingBlock` (0x81f1adaf) function + pub fn find_batch_containing_block( + &self, + block_num: u64, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([129, 241, 173, 175], block_num) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `gasEstimateComponents` (0xc94e6eeb) function + pub fn gas_estimate_components( + &self, + to: ::ethers::core::types::Address, + contract_creation: bool, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + (u64, u64, ::ethers::core::types::U256, ::ethers::core::types::U256), + > { + self.0 + .method_hash([201, 78, 110, 235], (to, contract_creation, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `gasEstimateL1Component` (0x77d488a2) function + pub fn gas_estimate_l1_component( + &self, + to: ::ethers::core::types::Address, + contract_creation: bool, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + (u64, ::ethers::core::types::U256, ::ethers::core::types::U256), + > { + self.0 + .method_hash([119, 212, 136, 162], (to, contract_creation, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getL1Confirmations` (0xe5ca238c) function + pub fn get_l1_confirmations( + &self, + block_hash: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([229, 202, 35, 140], block_hash) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `legacyLookupMessageBatchProof` (0x89496270) function + pub fn legacy_lookup_message_batch_proof( + &self, + batch_num: ::ethers::core::types::U256, + index: u64, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::std::vec::Vec<[u8; 32]>, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + ::ethers::core::types::Address, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::Bytes, + ), + > { + self.0 + .method_hash([137, 73, 98, 112], (batch_num, index)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `nitroGenesisBlock` (0x93a2fe21) function + pub fn nitro_genesis_block( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([147, 162, 254, 33], ()) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for NodeInterface { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `constructOutboxProof` function with signature `constructOutboxProof(uint64,uint64)` and selector `0x42696350` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "constructOutboxProof", + abi = "constructOutboxProof(uint64,uint64)" + )] + pub struct ConstructOutboxProofCall { + pub size: u64, + pub leaf: u64, + } + ///Container type for all input parameters for the `estimateRetryableTicket` function with signature `estimateRetryableTicket(address,uint256,address,uint256,address,address,bytes)` and selector `0xc3dc5879` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "estimateRetryableTicket", + abi = "estimateRetryableTicket(address,uint256,address,uint256,address,address,bytes)" + )] + pub struct EstimateRetryableTicketCall { + pub sender: ::ethers::core::types::Address, + pub deposit: ::ethers::core::types::U256, + pub to: ::ethers::core::types::Address, + pub l_2_call_value: ::ethers::core::types::U256, + pub excess_fee_refund_address: ::ethers::core::types::Address, + pub call_value_refund_address: ::ethers::core::types::Address, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `findBatchContainingBlock` function with signature `findBatchContainingBlock(uint64)` and selector `0x81f1adaf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "findBatchContainingBlock", + abi = "findBatchContainingBlock(uint64)" + )] + pub struct FindBatchContainingBlockCall { + pub block_num: u64, + } + ///Container type for all input parameters for the `gasEstimateComponents` function with signature `gasEstimateComponents(address,bool,bytes)` and selector `0xc94e6eeb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "gasEstimateComponents", + abi = "gasEstimateComponents(address,bool,bytes)" + )] + pub struct GasEstimateComponentsCall { + pub to: ::ethers::core::types::Address, + pub contract_creation: bool, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `gasEstimateL1Component` function with signature `gasEstimateL1Component(address,bool,bytes)` and selector `0x77d488a2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "gasEstimateL1Component", + abi = "gasEstimateL1Component(address,bool,bytes)" + )] + pub struct GasEstimateL1ComponentCall { + pub to: ::ethers::core::types::Address, + pub contract_creation: bool, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getL1Confirmations` function with signature `getL1Confirmations(bytes32)` and selector `0xe5ca238c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getL1Confirmations", abi = "getL1Confirmations(bytes32)")] + pub struct GetL1ConfirmationsCall { + pub block_hash: [u8; 32], + } + ///Container type for all input parameters for the `legacyLookupMessageBatchProof` function with signature `legacyLookupMessageBatchProof(uint256,uint64)` and selector `0x89496270` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "legacyLookupMessageBatchProof", + abi = "legacyLookupMessageBatchProof(uint256,uint64)" + )] + pub struct LegacyLookupMessageBatchProofCall { + pub batch_num: ::ethers::core::types::U256, + pub index: u64, + } + ///Container type for all input parameters for the `nitroGenesisBlock` function with signature `nitroGenesisBlock()` and selector `0x93a2fe21` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "nitroGenesisBlock", abi = "nitroGenesisBlock()")] + pub struct NitroGenesisBlockCall; + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum NodeInterfaceCalls { + ConstructOutboxProof(ConstructOutboxProofCall), + EstimateRetryableTicket(EstimateRetryableTicketCall), + FindBatchContainingBlock(FindBatchContainingBlockCall), + GasEstimateComponents(GasEstimateComponentsCall), + GasEstimateL1Component(GasEstimateL1ComponentCall), + GetL1Confirmations(GetL1ConfirmationsCall), + LegacyLookupMessageBatchProof(LegacyLookupMessageBatchProofCall), + NitroGenesisBlock(NitroGenesisBlockCall), + } + impl ::ethers::core::abi::AbiDecode for NodeInterfaceCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ConstructOutboxProof(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::EstimateRetryableTicket(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::FindBatchContainingBlock(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::GasEstimateComponents(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::GasEstimateL1Component(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::GetL1Confirmations(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::LegacyLookupMessageBatchProof(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::NitroGenesisBlock(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for NodeInterfaceCalls { + fn encode(self) -> Vec { + match self { + Self::ConstructOutboxProof(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::EstimateRetryableTicket(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::FindBatchContainingBlock(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GasEstimateComponents(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GasEstimateL1Component(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetL1Confirmations(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::LegacyLookupMessageBatchProof(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NitroGenesisBlock(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for NodeInterfaceCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ConstructOutboxProof(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::EstimateRetryableTicket(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::FindBatchContainingBlock(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GasEstimateComponents(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GasEstimateL1Component(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GetL1Confirmations(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LegacyLookupMessageBatchProof(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::NitroGenesisBlock(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: ConstructOutboxProofCall) -> Self { + Self::ConstructOutboxProof(value) + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: EstimateRetryableTicketCall) -> Self { + Self::EstimateRetryableTicket(value) + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: FindBatchContainingBlockCall) -> Self { + Self::FindBatchContainingBlock(value) + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: GasEstimateComponentsCall) -> Self { + Self::GasEstimateComponents(value) + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: GasEstimateL1ComponentCall) -> Self { + Self::GasEstimateL1Component(value) + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: GetL1ConfirmationsCall) -> Self { + Self::GetL1Confirmations(value) + } + } + impl ::core::convert::From + for NodeInterfaceCalls { + fn from(value: LegacyLookupMessageBatchProofCall) -> Self { + Self::LegacyLookupMessageBatchProof(value) + } + } + impl ::core::convert::From for NodeInterfaceCalls { + fn from(value: NitroGenesisBlockCall) -> Self { + Self::NitroGenesisBlock(value) + } + } + ///Container type for all return fields from the `constructOutboxProof` function with signature `constructOutboxProof(uint64,uint64)` and selector `0x42696350` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ConstructOutboxProofReturn { + pub send: [u8; 32], + pub root: [u8; 32], + pub proof: ::std::vec::Vec<[u8; 32]>, + } + ///Container type for all return fields from the `findBatchContainingBlock` function with signature `findBatchContainingBlock(uint64)` and selector `0x81f1adaf` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FindBatchContainingBlockReturn { + pub batch: u64, + } + ///Container type for all return fields from the `gasEstimateComponents` function with signature `gasEstimateComponents(address,bool,bytes)` and selector `0xc94e6eeb` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GasEstimateComponentsReturn { + pub gas_estimate: u64, + pub gas_estimate_for_l1: u64, + pub base_fee: ::ethers::core::types::U256, + pub l_1_base_fee_estimate: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `gasEstimateL1Component` function with signature `gasEstimateL1Component(address,bool,bytes)` and selector `0x77d488a2` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GasEstimateL1ComponentReturn { + pub gas_estimate_for_l1: u64, + pub base_fee: ::ethers::core::types::U256, + pub l_1_base_fee_estimate: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `getL1Confirmations` function with signature `getL1Confirmations(bytes32)` and selector `0xe5ca238c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetL1ConfirmationsReturn { + pub confirmations: u64, + } + ///Container type for all return fields from the `legacyLookupMessageBatchProof` function with signature `legacyLookupMessageBatchProof(uint256,uint64)` and selector `0x89496270` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct LegacyLookupMessageBatchProofReturn { + pub proof: ::std::vec::Vec<[u8; 32]>, + pub path: ::ethers::core::types::U256, + pub l_2_sender: ::ethers::core::types::Address, + pub l_1_dest: ::ethers::core::types::Address, + pub l_2_block: ::ethers::core::types::U256, + pub l_1_block: ::ethers::core::types::U256, + pub timestamp: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, + pub calldata_for_l1: ::ethers::core::types::Bytes, + } + ///Container type for all return fields from the `nitroGenesisBlock` function with signature `nitroGenesisBlock()` and selector `0x93a2fe21` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct NitroGenesisBlockReturn { + pub number: ::ethers::core::types::U256, + } +} diff --git a/crates/types/src/contracts/shared_types.rs b/crates/types/src/contracts/shared_types.rs new file mode 100644 index 000000000..65fa21e3c --- /dev/null +++ b/crates/types/src/contracts/shared_types.rs @@ -0,0 +1,58 @@ +///`UserOpsPerAggregator((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash +)] +pub struct UserOpsPerAggregator { + pub user_ops: ::std::vec::Vec, + pub aggregator: ::ethers::core::types::Address, + pub signature: ::ethers::core::types::Bytes, +} +///`DepositInfo(uint112,bool,uint112,uint32,uint48)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash +)] +pub struct DepositInfo { + pub deposit: u128, + pub staked: bool, + pub stake: u128, + pub unstake_delay_sec: u32, + pub withdraw_time: u64, +} +///`UserOperation(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash +)] +pub struct UserOperation { + pub sender: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub init_code: ::ethers::core::types::Bytes, + pub call_data: ::ethers::core::types::Bytes, + pub call_gas_limit: ::ethers::core::types::U256, + pub verification_gas_limit: ::ethers::core::types::U256, + pub pre_verification_gas: ::ethers::core::types::U256, + pub max_fee_per_gas: ::ethers::core::types::U256, + pub max_priority_fee_per_gas: ::ethers::core::types::U256, + pub paymaster_and_data: ::ethers::core::types::Bytes, + pub signature: ::ethers::core::types::Bytes, +} diff --git a/crates/types/src/contracts/simple_account.rs b/crates/types/src/contracts/simple_account.rs new file mode 100644 index 000000000..a5653afca --- /dev/null +++ b/crates/types/src/contracts/simple_account.rs @@ -0,0 +1,1234 @@ +pub use simple_account::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod simple_account { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("anEntryPoint"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract IEntryPoint")), + } + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("addDeposit"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("addDeposit"), inputs : + ::std::vec![], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("entryPoint"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("entryPoint"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract IEntryPoint")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("execute"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("execute"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("dest"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("value"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("func"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("executeBatch"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("executeBatch"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("dest"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Address)), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address[]")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("func"), kind : + ::ethers::core::abi::ethabi::ParamType::Array(::std::boxed::Box::new(::ethers::core::abi::ethabi::ParamType::Bytes)), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes[]")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getDeposit"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getDeposit"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("initialize"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("initialize"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("anOwner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("nonce"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("nonce"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("owner"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("owner"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("proxiableUUID"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("proxiableUUID"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("upgradeTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("upgradeTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("newImplementation"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("newImplementation"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("data"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("validateUserOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("validateUserOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("missingAccountFunds"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("validationData"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawDepositTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawDepositTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AdminChanged"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("AdminChanged"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("previousAdmin"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("newAdmin"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : false, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("BeaconUpgraded"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("BeaconUpgraded"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("beacon"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Initialized"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("Initialized"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("version"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(8usize), indexed : + false, }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SimpleAccountInitialized"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("SimpleAccountInitialized"), + inputs : ::std::vec![::ethers::core::abi::ethabi::EventParam { + name : ::std::borrow::ToOwned::to_owned("entryPoint"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("owner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }], anonymous : false, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("Upgraded"), inputs : + ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("implementation"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }], anonymous : false, } + ], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: true, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static SIMPLEACCOUNT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xC0`@R0`\x80R4\x80\x15b\0\0\x15W`\0\x80\xFD[P`@Qb\0\x1AM8\x03\x80b\0\x1AM\x839\x81\x01`@\x81\x90Rb\0\08\x91b\0\x01\x18V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0Rb\0\0Ob\0\0VV[Pb\0\x01JV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01\x16W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\0` \x82\x84\x03\x12\x15b\0\x01+W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01CW`\0\x80\xFD[\x93\x92PPPV[`\x80Q`\xA0Qa\x18\x97b\0\x01\xB6`\09`\0\x81\x81a\x02\x03\x01R\x81\x81a\x04\xA2\x01R\x81\x81a\x05#\x01R\x81\x81a\x07\x80\x01R\x81\x81a\t+\x01R\x81\x81a\x0B\xA9\x01Ra\x0E\\\x01R`\0\x81\x81a\x03\x86\x01R\x81\x81a\x03\xC6\x01R\x81\x81a\x05\xB4\x01R\x81\x81a\x05\xF4\x01Ra\x06\x87\x01Ra\x18\x97`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC6W`\x005`\xE0\x1C\x80cR\xD1\x90-\x11a\0\x7FW\x80c\xB0\xD6\x91\xFE\x11a\0YW\x80c\xB0\xD6\x91\xFE\x14a\x01\xF4W\x80c\xB6\x1D'\xF6\x14a\x02'W\x80c\xC3\x99\xEC\x88\x14a\x02GW\x80c\xC4\xD6m\xE8\x14a\x02\\W`\0\x80\xFD[\x80cR\xD1\x90-\x14a\x01\x82W\x80c\x8D\xA5\xCB[\x14a\x01\x97W\x80c\xAF\xFE\xD0\xE0\x14a\x01\xD6W`\0\x80\xFD[\x80c\x18\xDF\xB3\xC7\x14a\0\xD2W\x80c6Y\xCF\xE6\x14a\0\xF4W\x80c:\x87\x1C\xDD\x14a\x01\x14W\x80cJX\xDB\x19\x14a\x01GW\x80cMDV\r\x14a\x01OW\x80cO\x1E\xF2\x86\x14a\x01oW`\0\x80\xFD[6a\0\xCDW\0[`\0\x80\xFD[4\x80\x15a\0\xDEW`\0\x80\xFD[Pa\0\xF2a\0\xED6`\x04a\x13\xADV[a\x02|V[\0[4\x80\x15a\x01\0W`\0\x80\xFD[Pa\0\xF2a\x01\x0F6`\x04a\x14.V[a\x03|V[4\x80\x15a\x01 W`\0\x80\xFD[Pa\x014a\x01/6`\x04a\x14KV[a\x04[V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xF2a\x04\xA0V[4\x80\x15a\x01[W`\0\x80\xFD[Pa\0\xF2a\x01j6`\x04a\x14\x9FV[a\x05\x19V[a\0\xF2a\x01}6`\x04a\x14\xE1V[a\x05\xAAV[4\x80\x15a\x01\x8EW`\0\x80\xFD[Pa\x014a\x06zV[4\x80\x15a\x01\xA3W`\0\x80\xFD[P`\x01Ta\x01\xBE\x90`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01>V[4\x80\x15a\x01\xE2W`\0\x80\xFD[P`\x01T`\x01`\x01``\x1B\x03\x16a\x014V[4\x80\x15a\x02\0W`\0\x80\xFD[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xBEV[4\x80\x15a\x023W`\0\x80\xFD[Pa\0\xF2a\x02B6`\x04a\x15\xA5V[a\x07-V[4\x80\x15a\x02SW`\0\x80\xFD[Pa\x014a\x07|V[4\x80\x15a\x02hW`\0\x80\xFD[Pa\0\xF2a\x02w6`\x04a\x14.V[a\x08\x0EV[a\x02\x84a\t V[\x82\x81\x14a\x02\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rrwrong array lengths`h\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x03uWa\x03c\x85\x85\x83\x81\x81\x10a\x02\xEEWa\x02\xEEa\x16.V[\x90P` \x02\x01` \x81\x01\x90a\x03\x03\x91\x90a\x14.V[`\0\x85\x85\x85\x81\x81\x10a\x03\x17Wa\x03\x17a\x16.V[\x90P` \x02\x81\x01\x90a\x03)\x91\x90a\x16DV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\t\xB6\x92PPPV[\x80a\x03m\x81a\x16\xA1V[\x91PPa\x02\xD1V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x03a\x03\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x16\xBAV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x04\r`\0\x80Q` a\x18\x1B\x839\x81Q\x91RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x043W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x17\x06V[a\x04<\x81a\n&V[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92Ra\x04X\x91\x83\x91\x90a\n.V[PV[`\0a\x04ea\x0B\x9EV[a\x04o\x84\x84a\x0C\x16V[\x90Pa\x04~`@\x85\x01\x85a\x16DV[\x90P`\0\x03a\x04\x90Wa\x04\x90\x84a\x0C\xF2V[a\x04\x99\x82a\r\x86V[\x93\x92PPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qc\xB7`\xFA\xF9`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x90c\xB7`\xFA\xF9\x904\x90`$\x01`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x05\x05W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03uW=`\0\x80>=`\0\xFD[a\x05!a\r\xD3V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qc\x04\x0B\x85\x0F`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`$\x82\x01\x84\x90R\x91\x90\x91\x16\x90c \\(x\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x8EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xA2W=`\0\x80>=`\0\xFD[PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x03a\x05\xF2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x16\xBAV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x06;`\0\x80Q` a\x18\x1B\x839\x81Q\x91RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x17\x06V[a\x06j\x82a\n&V[a\x06v\x82\x82`\x01a\n.V[PPV[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FUUPSUpgradeable: must not be cal`D\x82\x01R\x7Fled through delegatecall\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x02\xC5V[P`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x90V[a\x075a\t V[a\x07v\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\t\xB6\x92PPPV[PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\t\x91\x90a\x17RV[\x90P\x90V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08.WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08HWP0;\x15\x80\x15a\x08HWP`\0T`\xFF\x16`\x01\x14[a\x08\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xCEW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xD7\x82a\x0E+V[\x80\x15a\x06vW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\thWP`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7Faccount: not Owner or EntryPoint`D\x82\x01R`d\x01a\x02\xC5V[V[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\t\xD2\x91\x90a\x17\x8FV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\n\x0FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\n\x14V[``\x91P[P\x91P\x91P\x81a\x03uW\x80Q` \x82\x01\xFD[a\x04Xa\r\xD3V[\x7FI\x10\xFD\xFA\x16\xFE\xD3&\x0E\xD0\xE7\x14\x7F|\xC6\xDA\x11\xA6\x02\x08\xB5\xB9@m\x12\xA65aO\xFD\x91CT`\xFF\x16\x15a\nfWa\na\x83a\x0E\xA8V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\n\xC0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\n\xBD\x91\x81\x01\x90a\x17RV[`\x01[a\x0B#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FERC1967Upgrade: new implementati`D\x82\x01Rmon is not UUPS`\x90\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x81\x14a\x0B\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FERC1967Upgrade: unsupported prox`D\x82\x01Rh\x1AXX\x9B\x19UURQ`\xBA\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[Pa\na\x83\x83\x83a\x0FDV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Faccount: not from EntryPoint\0\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[`\0\x80a\x0Cp\x83`@Q\x7F\x19Ethereum Signed Message:\n32\0\0\0\0` \x82\x01R`<\x81\x01\x82\x90R`\0\x90`\\\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x90Pa\x0C\xC0a\x0C\x83a\x01@\x86\x01\x86a\x16DV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x85\x93\x92PPa\x0Fi\x90PV[`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x91\x16\x14a\x0C\xE6W`\x01\x91PPa\x0C\xECV[`\0\x91PP[\x92\x91PPV[`\x01\x80T` \x83\x015\x91`\x01`\x01``\x1B\x03\x90\x91\x16\x90`\0a\r\x13\x83a\x17\xABV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP`\x01`\x01``\x1B\x03\x16\x14a\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ruaccount: invalid nonce`P\x1B`D\x82\x01R`d\x01a\x02\xC5V[\x80\x15a\x04XW`@Q`\0\x903\x90`\0\x19\x90\x84\x90\x84\x81\x81\x81\x85\x88\x88\xF1\x93PPPP=\x80`\0\x81\x14a\x03uW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03uV[`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\r\xF2WP30\x14[a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri7\xB76<\x907\xBB\xB72\xB9`\xB1\x1B`D\x82\x01R`d\x01a\x02\xC5V[`\x01\x80T`\x01`\x01``\x1B\x03\x16`\x01``\x1B`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82\x02\x92\x90\x92\x17\x92\x83\x90U`@Q\x92\x04\x81\x16\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90\x7FG\xE5\\v\xE7\xA6\xF1\xFD\x89\x96\xA1\xDA\x80\x08\xC1\xEA)i\x9C\xCA5\xE7\xBC\xD0W\xF2\xDE\xC3\x13\xB6\xE5\xDE\x90`\0\x90\xA3PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x0F\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x0FM\x83a\x0F\x8DV[`\0\x82Q\x11\x80a\x0FZWP\x80[\x15a\naWa\x07v\x83\x83a\x0F\xCDV[`\0\x80`\0a\x0Fx\x85\x85a\x0F\xF2V[\x91P\x91Pa\x0F\x85\x81a\x107V[P\x93\x92PPPV[a\x0F\x96\x81a\x0E\xA8V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``a\x04\x99\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x18;`'\x919a\x11\x81V[`\0\x80\x82Q`A\x03a\x10(W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x10\x1C\x87\x82\x85\x85a\x11\xF9V[\x94P\x94PPPPa\x100V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x10KWa\x10Ka\x17\xD1V[\x03a\x10SWPV[`\x01\x81`\x04\x81\x11\x15a\x10gWa\x10ga\x17\xD1V[\x03a\x10\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[`\x02\x81`\x04\x81\x11\x15a\x10\xC8Wa\x10\xC8a\x17\xD1V[\x03a\x11\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02\xC5V[`\x03\x81`\x04\x81\x11\x15a\x11)Wa\x11)a\x17\xD1V[\x03a\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x11\x9E\x91\x90a\x17\x8FV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x11\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x11\xDEV[``\x91P[P\x91P\x91Pa\x11\xEF\x86\x83\x83\x87a\x12\xBDV[\x96\x95PPPPPPV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x120WP`\0\x90P`\x03a\x12\xB4V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x12\x84W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xADW`\0`\x01\x92P\x92PPa\x12\xB4V[\x91P`\0\x90P[\x94P\x94\x92PPPV[``\x83\x15a\x13,W\x82Q`\0\x03a\x13%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x13%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[P\x81a\x136V[a\x136\x83\x83a\x13>V[\x94\x93PPPPV[\x81Q\x15a\x13NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x91\x90a\x17\xE7V[`\0\x80\x83`\x1F\x84\x01\x12a\x13zW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x100W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x13\xC3W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xDBW`\0\x80\xFD[a\x13\xE7\x88\x83\x89\x01a\x13hV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x14\0W`\0\x80\xFD[Pa\x14\r\x87\x82\x88\x01a\x13hV[\x95\x98\x94\x97P\x95PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x14@W`\0\x80\xFD[\x815a\x04\x99\x81a\x14\x19V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14`W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14wW`\0\x80\xFD[\x84\x01a\x01`\x81\x87\x03\x12\x15a\x14\x8AW`\0\x80\xFD[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14\xB2W`\0\x80\xFD[\x825a\x14\xBD\x81a\x14\x19V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x14\xF4W`\0\x80\xFD[\x825a\x14\xFF\x81a\x14\x19V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\x1CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x150W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15BWa\x15Ba\x14\xCBV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x15jWa\x15ja\x14\xCBV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x15\x83W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x15\xBBW`\0\x80\xFD[\x845a\x15\xC6\x81a\x14\x19V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xEAW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15\xFEW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x16\rW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x16\x1FW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x16[W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x16vW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x100W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xB3Wa\x16\xB3a\x16\x8BV[P`\x01\x01\x90V[` \x80\x82R`,\x90\x82\x01R\x7FFunction must be called through `@\x82\x01Rk\x19\x19[\x19Y\xD8]\x19X\xD8[\x1B`\xA2\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`,\x90\x82\x01R\x7FFunction must be called through `@\x82\x01Rkactive proxy`\xA0\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x17dW`\0\x80\xFD[PQ\x91\x90PV[`\0[\x83\x81\x10\x15a\x17\x86W\x81\x81\x01Q\x83\x82\x01R` \x01a\x17nV[PP`\0\x91\x01RV[`\0\x82Qa\x17\xA1\x81\x84` \x87\x01a\x17kV[\x91\x90\x91\x01\x92\x91PPV[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x81\x03a\x17\xC7Wa\x17\xC7a\x16\x8BV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[` \x81R`\0\x82Q\x80` \x84\x01Ra\x18\x06\x81`@\x85\x01` \x87\x01a\x17kV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCAddress: low-level delegate call failed\xA2dipfsX\"\x12 z!\xDA\xD0\x1DM\x16\x04,S\x80m\xE0D\x0C\xF0&:\xD6e\xB8\x1DZv\xD5\\3\xC2!\xA0a\xCBdsolcC\0\x08\x15\x003"; + /// The bytecode of the contract. + pub static SIMPLEACCOUNT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\xC6W`\x005`\xE0\x1C\x80cR\xD1\x90-\x11a\0\x7FW\x80c\xB0\xD6\x91\xFE\x11a\0YW\x80c\xB0\xD6\x91\xFE\x14a\x01\xF4W\x80c\xB6\x1D'\xF6\x14a\x02'W\x80c\xC3\x99\xEC\x88\x14a\x02GW\x80c\xC4\xD6m\xE8\x14a\x02\\W`\0\x80\xFD[\x80cR\xD1\x90-\x14a\x01\x82W\x80c\x8D\xA5\xCB[\x14a\x01\x97W\x80c\xAF\xFE\xD0\xE0\x14a\x01\xD6W`\0\x80\xFD[\x80c\x18\xDF\xB3\xC7\x14a\0\xD2W\x80c6Y\xCF\xE6\x14a\0\xF4W\x80c:\x87\x1C\xDD\x14a\x01\x14W\x80cJX\xDB\x19\x14a\x01GW\x80cMDV\r\x14a\x01OW\x80cO\x1E\xF2\x86\x14a\x01oW`\0\x80\xFD[6a\0\xCDW\0[`\0\x80\xFD[4\x80\x15a\0\xDEW`\0\x80\xFD[Pa\0\xF2a\0\xED6`\x04a\x13\xADV[a\x02|V[\0[4\x80\x15a\x01\0W`\0\x80\xFD[Pa\0\xF2a\x01\x0F6`\x04a\x14.V[a\x03|V[4\x80\x15a\x01 W`\0\x80\xFD[Pa\x014a\x01/6`\x04a\x14KV[a\x04[V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xF2a\x04\xA0V[4\x80\x15a\x01[W`\0\x80\xFD[Pa\0\xF2a\x01j6`\x04a\x14\x9FV[a\x05\x19V[a\0\xF2a\x01}6`\x04a\x14\xE1V[a\x05\xAAV[4\x80\x15a\x01\x8EW`\0\x80\xFD[Pa\x014a\x06zV[4\x80\x15a\x01\xA3W`\0\x80\xFD[P`\x01Ta\x01\xBE\x90`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01>V[4\x80\x15a\x01\xE2W`\0\x80\xFD[P`\x01T`\x01`\x01``\x1B\x03\x16a\x014V[4\x80\x15a\x02\0W`\0\x80\xFD[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xBEV[4\x80\x15a\x023W`\0\x80\xFD[Pa\0\xF2a\x02B6`\x04a\x15\xA5V[a\x07-V[4\x80\x15a\x02SW`\0\x80\xFD[Pa\x014a\x07|V[4\x80\x15a\x02hW`\0\x80\xFD[Pa\0\xF2a\x02w6`\x04a\x14.V[a\x08\x0EV[a\x02\x84a\t V[\x82\x81\x14a\x02\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rrwrong array lengths`h\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x03uWa\x03c\x85\x85\x83\x81\x81\x10a\x02\xEEWa\x02\xEEa\x16.V[\x90P` \x02\x01` \x81\x01\x90a\x03\x03\x91\x90a\x14.V[`\0\x85\x85\x85\x81\x81\x10a\x03\x17Wa\x03\x17a\x16.V[\x90P` \x02\x81\x01\x90a\x03)\x91\x90a\x16DV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\t\xB6\x92PPPV[\x80a\x03m\x81a\x16\xA1V[\x91PPa\x02\xD1V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x03a\x03\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x16\xBAV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x04\r`\0\x80Q` a\x18\x1B\x839\x81Q\x91RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x043W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x17\x06V[a\x04<\x81a\n&V[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92Ra\x04X\x91\x83\x91\x90a\n.V[PV[`\0a\x04ea\x0B\x9EV[a\x04o\x84\x84a\x0C\x16V[\x90Pa\x04~`@\x85\x01\x85a\x16DV[\x90P`\0\x03a\x04\x90Wa\x04\x90\x84a\x0C\xF2V[a\x04\x99\x82a\r\x86V[\x93\x92PPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qc\xB7`\xFA\xF9`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x90c\xB7`\xFA\xF9\x904\x90`$\x01`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x05\x05W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03uW=`\0\x80>=`\0\xFD[a\x05!a\r\xD3V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qc\x04\x0B\x85\x0F`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`$\x82\x01\x84\x90R\x91\x90\x91\x16\x90c \\(x\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x8EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xA2W=`\0\x80>=`\0\xFD[PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x03a\x05\xF2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x16\xBAV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x06;`\0\x80Q` a\x18\x1B\x839\x81Q\x91RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x17\x06V[a\x06j\x82a\n&V[a\x06v\x82\x82`\x01a\n.V[PPV[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FUUPSUpgradeable: must not be cal`D\x82\x01R\x7Fled through delegatecall\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x02\xC5V[P`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x90V[a\x075a\t V[a\x07v\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\t\xB6\x92PPPV[PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\t\x91\x90a\x17RV[\x90P\x90V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08.WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08HWP0;\x15\x80\x15a\x08HWP`\0T`\xFF\x16`\x01\x14[a\x08\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xCEW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xD7\x82a\x0E+V[\x80\x15a\x06vW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\thWP`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7Faccount: not Owner or EntryPoint`D\x82\x01R`d\x01a\x02\xC5V[V[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\t\xD2\x91\x90a\x17\x8FV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\n\x0FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\n\x14V[``\x91P[P\x91P\x91P\x81a\x03uW\x80Q` \x82\x01\xFD[a\x04Xa\r\xD3V[\x7FI\x10\xFD\xFA\x16\xFE\xD3&\x0E\xD0\xE7\x14\x7F|\xC6\xDA\x11\xA6\x02\x08\xB5\xB9@m\x12\xA65aO\xFD\x91CT`\xFF\x16\x15a\nfWa\na\x83a\x0E\xA8V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\n\xC0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\n\xBD\x91\x81\x01\x90a\x17RV[`\x01[a\x0B#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FERC1967Upgrade: new implementati`D\x82\x01Rmon is not UUPS`\x90\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x81\x14a\x0B\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FERC1967Upgrade: unsupported prox`D\x82\x01Rh\x1AXX\x9B\x19UURQ`\xBA\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[Pa\na\x83\x83\x83a\x0FDV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Faccount: not from EntryPoint\0\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[`\0\x80a\x0Cp\x83`@Q\x7F\x19Ethereum Signed Message:\n32\0\0\0\0` \x82\x01R`<\x81\x01\x82\x90R`\0\x90`\\\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x90Pa\x0C\xC0a\x0C\x83a\x01@\x86\x01\x86a\x16DV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x85\x93\x92PPa\x0Fi\x90PV[`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x91\x16\x14a\x0C\xE6W`\x01\x91PPa\x0C\xECV[`\0\x91PP[\x92\x91PPV[`\x01\x80T` \x83\x015\x91`\x01`\x01``\x1B\x03\x90\x91\x16\x90`\0a\r\x13\x83a\x17\xABV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP`\x01`\x01``\x1B\x03\x16\x14a\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ruaccount: invalid nonce`P\x1B`D\x82\x01R`d\x01a\x02\xC5V[\x80\x15a\x04XW`@Q`\0\x903\x90`\0\x19\x90\x84\x90\x84\x81\x81\x81\x85\x88\x88\xF1\x93PPPP=\x80`\0\x81\x14a\x03uW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03uV[`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\r\xF2WP30\x14[a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri7\xB76<\x907\xBB\xB72\xB9`\xB1\x1B`D\x82\x01R`d\x01a\x02\xC5V[`\x01\x80T`\x01`\x01``\x1B\x03\x16`\x01``\x1B`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82\x02\x92\x90\x92\x17\x92\x83\x90U`@Q\x92\x04\x81\x16\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90\x7FG\xE5\\v\xE7\xA6\xF1\xFD\x89\x96\xA1\xDA\x80\x08\xC1\xEA)i\x9C\xCA5\xE7\xBC\xD0W\xF2\xDE\xC3\x13\xB6\xE5\xDE\x90`\0\x90\xA3PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x0F\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x0FM\x83a\x0F\x8DV[`\0\x82Q\x11\x80a\x0FZWP\x80[\x15a\naWa\x07v\x83\x83a\x0F\xCDV[`\0\x80`\0a\x0Fx\x85\x85a\x0F\xF2V[\x91P\x91Pa\x0F\x85\x81a\x107V[P\x93\x92PPPV[a\x0F\x96\x81a\x0E\xA8V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``a\x04\x99\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x18;`'\x919a\x11\x81V[`\0\x80\x82Q`A\x03a\x10(W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x10\x1C\x87\x82\x85\x85a\x11\xF9V[\x94P\x94PPPPa\x100V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x10KWa\x10Ka\x17\xD1V[\x03a\x10SWPV[`\x01\x81`\x04\x81\x11\x15a\x10gWa\x10ga\x17\xD1V[\x03a\x10\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[`\x02\x81`\x04\x81\x11\x15a\x10\xC8Wa\x10\xC8a\x17\xD1V[\x03a\x11\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02\xC5V[`\x03\x81`\x04\x81\x11\x15a\x11)Wa\x11)a\x17\xD1V[\x03a\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x11\x9E\x91\x90a\x17\x8FV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x11\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x11\xDEV[``\x91P[P\x91P\x91Pa\x11\xEF\x86\x83\x83\x87a\x12\xBDV[\x96\x95PPPPPPV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x120WP`\0\x90P`\x03a\x12\xB4V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x12\x84W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xADW`\0`\x01\x92P\x92PPa\x12\xB4V[\x91P`\0\x90P[\x94P\x94\x92PPPV[``\x83\x15a\x13,W\x82Q`\0\x03a\x13%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x13%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[P\x81a\x136V[a\x136\x83\x83a\x13>V[\x94\x93PPPPV[\x81Q\x15a\x13NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x91\x90a\x17\xE7V[`\0\x80\x83`\x1F\x84\x01\x12a\x13zW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x100W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x13\xC3W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xDBW`\0\x80\xFD[a\x13\xE7\x88\x83\x89\x01a\x13hV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x14\0W`\0\x80\xFD[Pa\x14\r\x87\x82\x88\x01a\x13hV[\x95\x98\x94\x97P\x95PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x14@W`\0\x80\xFD[\x815a\x04\x99\x81a\x14\x19V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14`W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14wW`\0\x80\xFD[\x84\x01a\x01`\x81\x87\x03\x12\x15a\x14\x8AW`\0\x80\xFD[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14\xB2W`\0\x80\xFD[\x825a\x14\xBD\x81a\x14\x19V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x14\xF4W`\0\x80\xFD[\x825a\x14\xFF\x81a\x14\x19V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\x1CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x150W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15BWa\x15Ba\x14\xCBV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x15jWa\x15ja\x14\xCBV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x15\x83W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x15\xBBW`\0\x80\xFD[\x845a\x15\xC6\x81a\x14\x19V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xEAW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15\xFEW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x16\rW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x16\x1FW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x16[W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x16vW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x100W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xB3Wa\x16\xB3a\x16\x8BV[P`\x01\x01\x90V[` \x80\x82R`,\x90\x82\x01R\x7FFunction must be called through `@\x82\x01Rk\x19\x19[\x19Y\xD8]\x19X\xD8[\x1B`\xA2\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`,\x90\x82\x01R\x7FFunction must be called through `@\x82\x01Rkactive proxy`\xA0\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x17dW`\0\x80\xFD[PQ\x91\x90PV[`\0[\x83\x81\x10\x15a\x17\x86W\x81\x81\x01Q\x83\x82\x01R` \x01a\x17nV[PP`\0\x91\x01RV[`\0\x82Qa\x17\xA1\x81\x84` \x87\x01a\x17kV[\x91\x90\x91\x01\x92\x91PPV[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x81\x03a\x17\xC7Wa\x17\xC7a\x16\x8BV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[` \x81R`\0\x82Q\x80` \x84\x01Ra\x18\x06\x81`@\x85\x01` \x87\x01a\x17kV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCAddress: low-level delegate call failed\xA2dipfsX\"\x12 z!\xDA\xD0\x1DM\x16\x04,S\x80m\xE0D\x0C\xF0&:\xD6e\xB8\x1DZv\xD5\\3\xC2!\xA0a\xCBdsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static SIMPLEACCOUNT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct SimpleAccount(::ethers::contract::Contract); + impl ::core::clone::Clone for SimpleAccount { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for SimpleAccount { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for SimpleAccount { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for SimpleAccount { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(SimpleAccount)) + .field(&self.address()) + .finish() + } + } + impl SimpleAccount { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + SIMPLEACCOUNT_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + SIMPLEACCOUNT_ABI.clone(), + SIMPLEACCOUNT_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `addDeposit` (0x4a58db19) function + pub fn add_deposit(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([74, 88, 219, 25], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `entryPoint` (0xb0d691fe) function + pub fn entry_point( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([176, 214, 145, 254], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `execute` (0xb61d27f6) function + pub fn execute( + &self, + dest: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + func: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([182, 29, 39, 246], (dest, value, func)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `executeBatch` (0x18dfb3c7) function + pub fn execute_batch( + &self, + dest: ::std::vec::Vec<::ethers::core::types::Address>, + func: ::std::vec::Vec<::ethers::core::types::Bytes>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 223, 179, 199], (dest, func)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getDeposit` (0xc399ec88) function + pub fn get_deposit( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([195, 153, 236, 136], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `initialize` (0xc4d66de8) function + pub fn initialize( + &self, + an_owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([196, 214, 109, 232], an_owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `nonce` (0xaffed0e0) function + pub fn nonce( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 254, 208, 224], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `owner` (0x8da5cb5b) function + pub fn owner( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([141, 165, 203, 91], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `proxiableUUID` (0x52d1902d) function + pub fn proxiable_uuid( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 209, 144, 45], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeTo` (0x3659cfe6) function + pub fn upgrade_to( + &self, + new_implementation: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([54, 89, 207, 230], new_implementation) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function + pub fn upgrade_to_and_call( + &self, + new_implementation: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 30, 242, 134], (new_implementation, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateUserOp` (0x3a871cdd) function + pub fn validate_user_op( + &self, + user_op: UserOperation, + user_op_hash: [u8; 32], + missing_account_funds: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [58, 135, 28, 221], + (user_op, user_op_hash, missing_account_funds), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawDepositTo` (0x4d44560d) function + pub fn withdraw_deposit_to( + &self, + withdraw_address: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([77, 68, 86, 13], (withdraw_address, amount)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AdminChanged` event + pub fn admin_changed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + AdminChangedFilter, + > { + self.0.event() + } + ///Gets the contract's `BeaconUpgraded` event + pub fn beacon_upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + BeaconUpgradedFilter, + > { + self.0.event() + } + ///Gets the contract's `Initialized` event + pub fn initialized_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + InitializedFilter, + > { + self.0.event() + } + ///Gets the contract's `SimpleAccountInitialized` event + pub fn simple_account_initialized_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + SimpleAccountInitializedFilter, + > { + self.0.event() + } + ///Gets the contract's `Upgraded` event + pub fn upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + UpgradedFilter, + > { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + SimpleAccountEvents, + > { + self.0.event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for SimpleAccount { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "AdminChanged", abi = "AdminChanged(address,address)")] + pub struct AdminChangedFilter { + pub previous_admin: ::ethers::core::types::Address, + pub new_admin: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "BeaconUpgraded", abi = "BeaconUpgraded(address)")] + pub struct BeaconUpgradedFilter { + #[ethevent(indexed)] + pub beacon: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Initialized", abi = "Initialized(uint8)")] + pub struct InitializedFilter { + pub version: u8, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "SimpleAccountInitialized", + abi = "SimpleAccountInitialized(address,address)" + )] + pub struct SimpleAccountInitializedFilter { + #[ethevent(indexed)] + pub entry_point: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] + pub struct UpgradedFilter { + #[ethevent(indexed)] + pub implementation: ::ethers::core::types::Address, + } + ///Container type for all of the contract's events + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum SimpleAccountEvents { + AdminChangedFilter(AdminChangedFilter), + BeaconUpgradedFilter(BeaconUpgradedFilter), + InitializedFilter(InitializedFilter), + SimpleAccountInitializedFilter(SimpleAccountInitializedFilter), + UpgradedFilter(UpgradedFilter), + } + impl ::ethers::contract::EthLogDecode for SimpleAccountEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AdminChangedFilter::decode_log(log) { + return Ok(SimpleAccountEvents::AdminChangedFilter(decoded)); + } + if let Ok(decoded) = BeaconUpgradedFilter::decode_log(log) { + return Ok(SimpleAccountEvents::BeaconUpgradedFilter(decoded)); + } + if let Ok(decoded) = InitializedFilter::decode_log(log) { + return Ok(SimpleAccountEvents::InitializedFilter(decoded)); + } + if let Ok(decoded) = SimpleAccountInitializedFilter::decode_log(log) { + return Ok(SimpleAccountEvents::SimpleAccountInitializedFilter(decoded)); + } + if let Ok(decoded) = UpgradedFilter::decode_log(log) { + return Ok(SimpleAccountEvents::UpgradedFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for SimpleAccountEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AdminChangedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::BeaconUpgradedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::InitializedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SimpleAccountInitializedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for SimpleAccountEvents { + fn from(value: AdminChangedFilter) -> Self { + Self::AdminChangedFilter(value) + } + } + impl ::core::convert::From for SimpleAccountEvents { + fn from(value: BeaconUpgradedFilter) -> Self { + Self::BeaconUpgradedFilter(value) + } + } + impl ::core::convert::From for SimpleAccountEvents { + fn from(value: InitializedFilter) -> Self { + Self::InitializedFilter(value) + } + } + impl ::core::convert::From for SimpleAccountEvents { + fn from(value: SimpleAccountInitializedFilter) -> Self { + Self::SimpleAccountInitializedFilter(value) + } + } + impl ::core::convert::From for SimpleAccountEvents { + fn from(value: UpgradedFilter) -> Self { + Self::UpgradedFilter(value) + } + } + ///Container type for all input parameters for the `addDeposit` function with signature `addDeposit()` and selector `0x4a58db19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "addDeposit", abi = "addDeposit()")] + pub struct AddDepositCall; + ///Container type for all input parameters for the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "entryPoint", abi = "entryPoint()")] + pub struct EntryPointCall; + ///Container type for all input parameters for the `execute` function with signature `execute(address,uint256,bytes)` and selector `0xb61d27f6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "execute", abi = "execute(address,uint256,bytes)")] + pub struct ExecuteCall { + pub dest: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub func: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch(address[],bytes[])` and selector `0x18dfb3c7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "executeBatch", abi = "executeBatch(address[],bytes[])")] + pub struct ExecuteBatchCall { + pub dest: ::std::vec::Vec<::ethers::core::types::Address>, + pub func: ::std::vec::Vec<::ethers::core::types::Bytes>, + } + ///Container type for all input parameters for the `getDeposit` function with signature `getDeposit()` and selector `0xc399ec88` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getDeposit", abi = "getDeposit()")] + pub struct GetDepositCall; + ///Container type for all input parameters for the `initialize` function with signature `initialize(address)` and selector `0xc4d66de8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "initialize", abi = "initialize(address)")] + pub struct InitializeCall { + pub an_owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `nonce` function with signature `nonce()` and selector `0xaffed0e0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "nonce", abi = "nonce()")] + pub struct NonceCall; + ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "owner", abi = "owner()")] + pub struct OwnerCall; + ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] + pub struct ProxiableUUIDCall; + ///Container type for all input parameters for the `upgradeTo` function with signature `upgradeTo(address)` and selector `0x3659cfe6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "upgradeTo", abi = "upgradeTo(address)")] + pub struct UpgradeToCall { + pub new_implementation: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] + pub struct UpgradeToAndCallCall { + pub new_implementation: ::ethers::core::types::Address, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "validateUserOp", + abi = "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" + )] + pub struct ValidateUserOpCall { + pub user_op: UserOperation, + pub user_op_hash: [u8; 32], + pub missing_account_funds: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `withdrawDepositTo` function with signature `withdrawDepositTo(address,uint256)` and selector `0x4d44560d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawDepositTo", abi = "withdrawDepositTo(address,uint256)")] + pub struct WithdrawDepositToCall { + pub withdraw_address: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum SimpleAccountCalls { + AddDeposit(AddDepositCall), + EntryPoint(EntryPointCall), + Execute(ExecuteCall), + ExecuteBatch(ExecuteBatchCall), + GetDeposit(GetDepositCall), + Initialize(InitializeCall), + Nonce(NonceCall), + Owner(OwnerCall), + ProxiableUUID(ProxiableUUIDCall), + UpgradeTo(UpgradeToCall), + UpgradeToAndCall(UpgradeToAndCallCall), + ValidateUserOp(ValidateUserOpCall), + WithdrawDepositTo(WithdrawDepositToCall), + } + impl ::ethers::core::abi::AbiDecode for SimpleAccountCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::AddDeposit(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::EntryPoint(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Execute(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ExecuteBatch(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetDeposit(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Initialize(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Nonce(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Owner(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ProxiableUUID(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::UpgradeTo(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::UpgradeToAndCall(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::ValidateUserOp(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::WithdrawDepositTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for SimpleAccountCalls { + fn encode(self) -> Vec { + match self { + Self::AddDeposit(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::EntryPoint(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExecuteBatch(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetDeposit(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Initialize(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Nonce(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ProxiableUUID(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UpgradeTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UpgradeToAndCall(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateUserOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawDepositTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for SimpleAccountCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddDeposit(element) => ::core::fmt::Display::fmt(element, f), + Self::EntryPoint(element) => ::core::fmt::Display::fmt(element, f), + Self::Execute(element) => ::core::fmt::Display::fmt(element, f), + Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), + Self::GetDeposit(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), + Self::Nonce(element) => ::core::fmt::Display::fmt(element, f), + Self::Owner(element) => ::core::fmt::Display::fmt(element, f), + Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeTo(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawDepositTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: AddDepositCall) -> Self { + Self::AddDeposit(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: EntryPointCall) -> Self { + Self::EntryPoint(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: ExecuteCall) -> Self { + Self::Execute(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: ExecuteBatchCall) -> Self { + Self::ExecuteBatch(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: GetDepositCall) -> Self { + Self::GetDeposit(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: NonceCall) -> Self { + Self::Nonce(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: OwnerCall) -> Self { + Self::Owner(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: ProxiableUUIDCall) -> Self { + Self::ProxiableUUID(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: UpgradeToCall) -> Self { + Self::UpgradeTo(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: UpgradeToAndCallCall) -> Self { + Self::UpgradeToAndCall(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: ValidateUserOpCall) -> Self { + Self::ValidateUserOp(value) + } + } + impl ::core::convert::From for SimpleAccountCalls { + fn from(value: WithdrawDepositToCall) -> Self { + Self::WithdrawDepositTo(value) + } + } + ///Container type for all return fields from the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct EntryPointReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `getDeposit` function with signature `getDeposit()` and selector `0xc399ec88` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetDepositReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `nonce` function with signature `nonce()` and selector `0xaffed0e0` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct NonceReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OwnerReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ProxiableUUIDReturn(pub [u8; 32]); + ///Container type for all return fields from the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ValidateUserOpReturn { + pub validation_data: ::ethers::core::types::U256, + } +} diff --git a/crates/types/src/contracts/simple_account_factory.rs b/crates/types/src/contracts/simple_account_factory.rs new file mode 100644 index 000000000..a85c653a2 --- /dev/null +++ b/crates/types/src/contracts/simple_account_factory.rs @@ -0,0 +1,382 @@ +pub use simple_account_factory::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod simple_account_factory { + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("_entryPoint"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract IEntryPoint")), + } + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("accountImplementation"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("accountImplementation"), inputs + : ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract SimpleAccount")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("createAccount"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("createAccount"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("owner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("salt"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("ret"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract SimpleAccount")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getAddress"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("owner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("salt"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static SIMPLEACCOUNTFACTORY_ABI: ::ethers::contract::Lazy< + ::ethers::core::abi::Abi, + > = ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa#\xA58\x03\x80a#\xA5\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x88V[\x80`@Qa\0<\x90a\0{V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0hW=`\0\x80>=`\0\xFD[P`\x01`\x01`\xA0\x1B\x03\x16`\x80RPa\0\xB8V[a\x1AM\x80a\tX\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\0\x9AW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xB1W`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x08ya\0\xDF`\09`\0\x81\x81`K\x01R\x81\x81`\xED\x01Ra\x01\xBA\x01Ra\x08y`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\x11FO\xBE\x14a\0FW\x80c_\xBF\xB9\xCF\x14a\0\x89W\x80c\x8C\xB8N\x18\x14a\0\x9CW[`\0\x80\xFD[a\0m\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0ma\0\x976`\x04a\x02\x95V[a\0\xAFV[a\0ma\0\xAA6`\x04a\x02\x95V[a\x01{V[`\0\x80a\0\xBC\x84\x84a\x01{V[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16;\x80\x15a\0\xD7WP\x90Pa\x01uV[`@Q`\x01`\x01`\xA0\x1B\x03\x86\x16`$\x82\x01R\x84\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90`D\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x9A\xCD\xBD`\xE3\x1B\x17\x90RQa\x01D\x90a\x02\x88V[a\x01O\x92\x91\x90a\x02\xF1V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01oW=`\0\x80>=`\0\xFD[P\x92PPP[\x92\x91PPV[`\0a\x02O\x82`\0\x1B`@Q\x80` \x01a\x01\x94\x90a\x02\x88V[`\x1F\x19\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x90R`\x01`\x01`\xA0\x1B\x03\x87\x16`$\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90`D\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x80\x83\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x9A\xCD\xBD`\xE3\x1B\x17\x90R\x90Qa\x02\x16\x93\x92\x91\x01a\x02\xF1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x024\x92\x91` \x01a\x033V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x02VV[\x93\x92PPPV[`\0a\x02O\x83\x830`\0`@Q\x83`@\x82\x01R\x84` \x82\x01R\x82\x81R`\x0B\x81\x01\x90P`\xFF\x81S`U\x90 \x94\x93PPPPV[a\x04\xE1\x80a\x03c\x839\x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xA8W`\0\x80\xFD[\x825`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\xBFW`\0\x80\xFD[\x94` \x93\x90\x93\x015\x93PPPV[`\0[\x83\x81\x10\x15a\x02\xE8W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02\xD0V[PP`\0\x91\x01RV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q\x80`@\x84\x01Ra\x03\x1E\x81``\x85\x01` \x87\x01a\x02\xCDV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01``\x01\x93\x92PPPV[`\0\x83Qa\x03E\x81\x84` \x88\x01a\x02\xCDV[\x83Q\x90\x83\x01\x90a\x03Y\x81\x83` \x88\x01a\x02\xCDV[\x01\x94\x93PPPPV\xFE`\x80`@R`@Qa\x04\xE18\x03\x80a\x04\xE1\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x02\xDEV[a\0.\x82\x82`\0a\x005V[PPa\x03\xFBV[a\0>\x83a\0aV[`\0\x82Q\x11\x80a\0KWP\x80[\x15a\0\\Wa\0Z\x83\x83a\0\xA1V[P[PPPV[a\0j\x81a\0\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``a\0\xC6\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x04\xBA`'\x919a\x01\x80V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x01?W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01\x9D\x91\x90a\x03\xACV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xDDV[``\x91P[P\x90\x92P\x90Pa\x01\xEF\x86\x83\x83\x87a\x01\xF9V[\x96\x95PPPPPPV[``\x83\x15a\x02hW\x82Q`\0\x03a\x02aW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x016V[P\x81a\x02rV[a\x02r\x83\x83a\x02zV[\x94\x93PPPPV[\x81Q\x15a\x02\x8AW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x016\x91\x90a\x03\xC8V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x02\xD5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02\xBDV[PP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xF1W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x08W`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x03%W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x039W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x03KWa\x03Ka\x02\xA4V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03sWa\x03sa\x02\xA4V[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x03\x8CW`\0\x80\xFD[a\x03\x9D\x83` \x83\x01` \x88\x01a\x02\xBAV[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x82Qa\x03\xBE\x81\x84` \x87\x01a\x02\xBAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x03\xE7\x81`@\x85\x01` \x87\x01a\x02\xBAV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\xB1\x80a\x04\t`\09`\0\xF3\xFE`\x80`@R6`\x10W`\x0E`\x13V[\0[`\x0E[`\x1F`\x1B`!V[`XV[V[`\0`S\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15`vW=`\0\xF3[=`\0\xFD\xFE\xA2dipfsX\"\x12 \x01\xC2\xA2\xA9\x95:\xD0\xC5\xC2\xA1]\\%\xC1-\x82 \x8F\xBA\xD7\x1D\xF7\xAA\x14\xC8\xBB\xA3\xE6\xA3\x96\x9E\xC8dsolcC\0\x08\x15\x003Address: low-level delegate call failed\xA2dipfsX\"\x12 \x13\xD1\x13\x97\x91\x1B\x81.\xA6e\x08#\x9B\xE6\x94\xFD\xC7\xF9x\"\n.\x96\x04\xAA1\xA6\xE5\x96\xBC\xF4\xDAdsolcC\0\x08\x15\x003`\xC0`@R0`\x80R4\x80\x15b\0\0\x15W`\0\x80\xFD[P`@Qb\0\x1AM8\x03\x80b\0\x1AM\x839\x81\x01`@\x81\x90Rb\0\08\x91b\0\x01\x18V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0Rb\0\0Ob\0\0VV[Pb\0\x01JV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01\x16W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\0` \x82\x84\x03\x12\x15b\0\x01+W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01CW`\0\x80\xFD[\x93\x92PPPV[`\x80Q`\xA0Qa\x18\x97b\0\x01\xB6`\09`\0\x81\x81a\x02\x03\x01R\x81\x81a\x04\xA2\x01R\x81\x81a\x05#\x01R\x81\x81a\x07\x80\x01R\x81\x81a\t+\x01R\x81\x81a\x0B\xA9\x01Ra\x0E\\\x01R`\0\x81\x81a\x03\x86\x01R\x81\x81a\x03\xC6\x01R\x81\x81a\x05\xB4\x01R\x81\x81a\x05\xF4\x01Ra\x06\x87\x01Ra\x18\x97`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC6W`\x005`\xE0\x1C\x80cR\xD1\x90-\x11a\0\x7FW\x80c\xB0\xD6\x91\xFE\x11a\0YW\x80c\xB0\xD6\x91\xFE\x14a\x01\xF4W\x80c\xB6\x1D'\xF6\x14a\x02'W\x80c\xC3\x99\xEC\x88\x14a\x02GW\x80c\xC4\xD6m\xE8\x14a\x02\\W`\0\x80\xFD[\x80cR\xD1\x90-\x14a\x01\x82W\x80c\x8D\xA5\xCB[\x14a\x01\x97W\x80c\xAF\xFE\xD0\xE0\x14a\x01\xD6W`\0\x80\xFD[\x80c\x18\xDF\xB3\xC7\x14a\0\xD2W\x80c6Y\xCF\xE6\x14a\0\xF4W\x80c:\x87\x1C\xDD\x14a\x01\x14W\x80cJX\xDB\x19\x14a\x01GW\x80cMDV\r\x14a\x01OW\x80cO\x1E\xF2\x86\x14a\x01oW`\0\x80\xFD[6a\0\xCDW\0[`\0\x80\xFD[4\x80\x15a\0\xDEW`\0\x80\xFD[Pa\0\xF2a\0\xED6`\x04a\x13\xADV[a\x02|V[\0[4\x80\x15a\x01\0W`\0\x80\xFD[Pa\0\xF2a\x01\x0F6`\x04a\x14.V[a\x03|V[4\x80\x15a\x01 W`\0\x80\xFD[Pa\x014a\x01/6`\x04a\x14KV[a\x04[V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xF2a\x04\xA0V[4\x80\x15a\x01[W`\0\x80\xFD[Pa\0\xF2a\x01j6`\x04a\x14\x9FV[a\x05\x19V[a\0\xF2a\x01}6`\x04a\x14\xE1V[a\x05\xAAV[4\x80\x15a\x01\x8EW`\0\x80\xFD[Pa\x014a\x06zV[4\x80\x15a\x01\xA3W`\0\x80\xFD[P`\x01Ta\x01\xBE\x90`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01>V[4\x80\x15a\x01\xE2W`\0\x80\xFD[P`\x01T`\x01`\x01``\x1B\x03\x16a\x014V[4\x80\x15a\x02\0W`\0\x80\xFD[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\xBEV[4\x80\x15a\x023W`\0\x80\xFD[Pa\0\xF2a\x02B6`\x04a\x15\xA5V[a\x07-V[4\x80\x15a\x02SW`\0\x80\xFD[Pa\x014a\x07|V[4\x80\x15a\x02hW`\0\x80\xFD[Pa\0\xF2a\x02w6`\x04a\x14.V[a\x08\x0EV[a\x02\x84a\t V[\x82\x81\x14a\x02\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rrwrong array lengths`h\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x03uWa\x03c\x85\x85\x83\x81\x81\x10a\x02\xEEWa\x02\xEEa\x16.V[\x90P` \x02\x01` \x81\x01\x90a\x03\x03\x91\x90a\x14.V[`\0\x85\x85\x85\x81\x81\x10a\x03\x17Wa\x03\x17a\x16.V[\x90P` \x02\x81\x01\x90a\x03)\x91\x90a\x16DV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\t\xB6\x92PPPV[\x80a\x03m\x81a\x16\xA1V[\x91PPa\x02\xD1V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x03a\x03\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x16\xBAV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x04\r`\0\x80Q` a\x18\x1B\x839\x81Q\x91RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x043W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x17\x06V[a\x04<\x81a\n&V[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92Ra\x04X\x91\x83\x91\x90a\n.V[PV[`\0a\x04ea\x0B\x9EV[a\x04o\x84\x84a\x0C\x16V[\x90Pa\x04~`@\x85\x01\x85a\x16DV[\x90P`\0\x03a\x04\x90Wa\x04\x90\x84a\x0C\xF2V[a\x04\x99\x82a\r\x86V[\x93\x92PPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qc\xB7`\xFA\xF9`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x90c\xB7`\xFA\xF9\x904\x90`$\x01`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x05\x05W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03uW=`\0\x80>=`\0\xFD[a\x05!a\r\xD3V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qc\x04\x0B\x85\x0F`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`$\x82\x01\x84\x90R\x91\x90\x91\x16\x90c \\(x\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\x8EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xA2W=`\0\x80>=`\0\xFD[PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x03a\x05\xF2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x16\xBAV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x06;`\0\x80Q` a\x18\x1B\x839\x81Q\x91RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06aW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x90a\x17\x06V[a\x06j\x82a\n&V[a\x06v\x82\x82`\x01a\n.V[PPV[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x07\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FUUPSUpgradeable: must not be cal`D\x82\x01R\x7Fled through delegatecall\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x02\xC5V[P`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x90V[a\x075a\t V[a\x07v\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\t\xB6\x92PPPV[PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xE5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\t\x91\x90a\x17RV[\x90P\x90V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08.WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08HWP0;\x15\x80\x15a\x08HWP`\0T`\xFF\x16`\x01\x14[a\x08\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xCEW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xD7\x82a\x0E+V[\x80\x15a\x06vW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\thWP`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7Faccount: not Owner or EntryPoint`D\x82\x01R`d\x01a\x02\xC5V[V[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\t\xD2\x91\x90a\x17\x8FV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\n\x0FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\n\x14V[``\x91P[P\x91P\x91P\x81a\x03uW\x80Q` \x82\x01\xFD[a\x04Xa\r\xD3V[\x7FI\x10\xFD\xFA\x16\xFE\xD3&\x0E\xD0\xE7\x14\x7F|\xC6\xDA\x11\xA6\x02\x08\xB5\xB9@m\x12\xA65aO\xFD\x91CT`\xFF\x16\x15a\nfWa\na\x83a\x0E\xA8V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\n\xC0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\n\xBD\x91\x81\x01\x90a\x17RV[`\x01[a\x0B#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FERC1967Upgrade: new implementati`D\x82\x01Rmon is not UUPS`\x90\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x81\x14a\x0B\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FERC1967Upgrade: unsupported prox`D\x82\x01Rh\x1AXX\x9B\x19UURQ`\xBA\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[Pa\na\x83\x83\x83a\x0FDV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Faccount: not from EntryPoint\0\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[`\0\x80a\x0Cp\x83`@Q\x7F\x19Ethereum Signed Message:\n32\0\0\0\0` \x82\x01R`<\x81\x01\x82\x90R`\0\x90`\\\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x90Pa\x0C\xC0a\x0C\x83a\x01@\x86\x01\x86a\x16DV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x85\x93\x92PPa\x0Fi\x90PV[`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x91\x16\x14a\x0C\xE6W`\x01\x91PPa\x0C\xECV[`\0\x91PP[\x92\x91PPV[`\x01\x80T` \x83\x015\x91`\x01`\x01``\x1B\x03\x90\x91\x16\x90`\0a\r\x13\x83a\x17\xABV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP`\x01`\x01``\x1B\x03\x16\x14a\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ruaccount: invalid nonce`P\x1B`D\x82\x01R`d\x01a\x02\xC5V[\x80\x15a\x04XW`@Q`\0\x903\x90`\0\x19\x90\x84\x90\x84\x81\x81\x81\x85\x88\x88\xF1\x93PPPP=\x80`\0\x81\x14a\x03uW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03uV[`\x01T`\x01``\x1B\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\r\xF2WP30\x14[a\t\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri7\xB76<\x907\xBB\xB72\xB9`\xB1\x1B`D\x82\x01R`d\x01a\x02\xC5V[`\x01\x80T`\x01`\x01``\x1B\x03\x16`\x01``\x1B`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82\x02\x92\x90\x92\x17\x92\x83\x90U`@Q\x92\x04\x81\x16\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90\x7FG\xE5\\v\xE7\xA6\xF1\xFD\x89\x96\xA1\xDA\x80\x08\xC1\xEA)i\x9C\xCA5\xE7\xBC\xD0W\xF2\xDE\xC3\x13\xB6\xE5\xDE\x90`\0\x90\xA3PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x0F\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[`\0\x80Q` a\x18\x1B\x839\x81Q\x91R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x0FM\x83a\x0F\x8DV[`\0\x82Q\x11\x80a\x0FZWP\x80[\x15a\naWa\x07v\x83\x83a\x0F\xCDV[`\0\x80`\0a\x0Fx\x85\x85a\x0F\xF2V[\x91P\x91Pa\x0F\x85\x81a\x107V[P\x93\x92PPPV[a\x0F\x96\x81a\x0E\xA8V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``a\x04\x99\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x18;`'\x919a\x11\x81V[`\0\x80\x82Q`A\x03a\x10(W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x10\x1C\x87\x82\x85\x85a\x11\xF9V[\x94P\x94PPPPa\x100V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x10KWa\x10Ka\x17\xD1V[\x03a\x10SWPV[`\x01\x81`\x04\x81\x11\x15a\x10gWa\x10ga\x17\xD1V[\x03a\x10\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[`\x02\x81`\x04\x81\x11\x15a\x10\xC8Wa\x10\xC8a\x17\xD1V[\x03a\x11\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02\xC5V[`\x03\x81`\x04\x81\x11\x15a\x11)Wa\x11)a\x17\xD1V[\x03a\x04XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x02\xC5V[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x11\x9E\x91\x90a\x17\x8FV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x11\xD9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x11\xDEV[``\x91P[P\x91P\x91Pa\x11\xEF\x86\x83\x83\x87a\x12\xBDV[\x96\x95PPPPPPV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x120WP`\0\x90P`\x03a\x12\xB4V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x12\x84W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xADW`\0`\x01\x92P\x92PPa\x12\xB4V[\x91P`\0\x90P[\x94P\x94\x92PPPV[``\x83\x15a\x13,W\x82Q`\0\x03a\x13%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x13%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x02\xC5V[P\x81a\x136V[a\x136\x83\x83a\x13>V[\x94\x93PPPPV[\x81Q\x15a\x13NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02\xC5\x91\x90a\x17\xE7V[`\0\x80\x83`\x1F\x84\x01\x12a\x13zW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x100W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x13\xC3W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xDBW`\0\x80\xFD[a\x13\xE7\x88\x83\x89\x01a\x13hV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x14\0W`\0\x80\xFD[Pa\x14\r\x87\x82\x88\x01a\x13hV[\x95\x98\x94\x97P\x95PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04XW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x14@W`\0\x80\xFD[\x815a\x04\x99\x81a\x14\x19V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x14`W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14wW`\0\x80\xFD[\x84\x01a\x01`\x81\x87\x03\x12\x15a\x14\x8AW`\0\x80\xFD[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14\xB2W`\0\x80\xFD[\x825a\x14\xBD\x81a\x14\x19V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x14\xF4W`\0\x80\xFD[\x825a\x14\xFF\x81a\x14\x19V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\x1CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x150W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15BWa\x15Ba\x14\xCBV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x15jWa\x15ja\x14\xCBV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x15\x83W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x15\xBBW`\0\x80\xFD[\x845a\x15\xC6\x81a\x14\x19V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15\xEAW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15\xFEW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x16\rW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x16\x1FW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x16[W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x16vW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x100W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xB3Wa\x16\xB3a\x16\x8BV[P`\x01\x01\x90V[` \x80\x82R`,\x90\x82\x01R\x7FFunction must be called through `@\x82\x01Rk\x19\x19[\x19Y\xD8]\x19X\xD8[\x1B`\xA2\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`,\x90\x82\x01R\x7FFunction must be called through `@\x82\x01Rkactive proxy`\xA0\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x17dW`\0\x80\xFD[PQ\x91\x90PV[`\0[\x83\x81\x10\x15a\x17\x86W\x81\x81\x01Q\x83\x82\x01R` \x01a\x17nV[PP`\0\x91\x01RV[`\0\x82Qa\x17\xA1\x81\x84` \x87\x01a\x17kV[\x91\x90\x91\x01\x92\x91PPV[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x81\x03a\x17\xC7Wa\x17\xC7a\x16\x8BV[`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[` \x81R`\0\x82Q\x80` \x84\x01Ra\x18\x06\x81`@\x85\x01` \x87\x01a\x17kV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCAddress: low-level delegate call failed\xA2dipfsX\"\x12 z!\xDA\xD0\x1DM\x16\x04,S\x80m\xE0D\x0C\xF0&:\xD6e\xB8\x1DZv\xD5\\3\xC2!\xA0a\xCBdsolcC\0\x08\x15\x003"; + /// The bytecode of the contract. + pub static SIMPLEACCOUNTFACTORY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\x11FO\xBE\x14a\0FW\x80c_\xBF\xB9\xCF\x14a\0\x89W\x80c\x8C\xB8N\x18\x14a\0\x9CW[`\0\x80\xFD[a\0m\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0ma\0\x976`\x04a\x02\x95V[a\0\xAFV[a\0ma\0\xAA6`\x04a\x02\x95V[a\x01{V[`\0\x80a\0\xBC\x84\x84a\x01{V[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16;\x80\x15a\0\xD7WP\x90Pa\x01uV[`@Q`\x01`\x01`\xA0\x1B\x03\x86\x16`$\x82\x01R\x84\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90`D\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x9A\xCD\xBD`\xE3\x1B\x17\x90RQa\x01D\x90a\x02\x88V[a\x01O\x92\x91\x90a\x02\xF1V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01oW=`\0\x80>=`\0\xFD[P\x92PPP[\x92\x91PPV[`\0a\x02O\x82`\0\x1B`@Q\x80` \x01a\x01\x94\x90a\x02\x88V[`\x1F\x19\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x90R`\x01`\x01`\xA0\x1B\x03\x87\x16`$\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90`D\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x80\x83\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x9A\xCD\xBD`\xE3\x1B\x17\x90R\x90Qa\x02\x16\x93\x92\x91\x01a\x02\xF1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x024\x92\x91` \x01a\x033V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x02VV[\x93\x92PPPV[`\0a\x02O\x83\x830`\0`@Q\x83`@\x82\x01R\x84` \x82\x01R\x82\x81R`\x0B\x81\x01\x90P`\xFF\x81S`U\x90 \x94\x93PPPPV[a\x04\xE1\x80a\x03c\x839\x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xA8W`\0\x80\xFD[\x825`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\xBFW`\0\x80\xFD[\x94` \x93\x90\x93\x015\x93PPPV[`\0[\x83\x81\x10\x15a\x02\xE8W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02\xD0V[PP`\0\x91\x01RV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q\x80`@\x84\x01Ra\x03\x1E\x81``\x85\x01` \x87\x01a\x02\xCDV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01``\x01\x93\x92PPPV[`\0\x83Qa\x03E\x81\x84` \x88\x01a\x02\xCDV[\x83Q\x90\x83\x01\x90a\x03Y\x81\x83` \x88\x01a\x02\xCDV[\x01\x94\x93PPPPV\xFE`\x80`@R`@Qa\x04\xE18\x03\x80a\x04\xE1\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x02\xDEV[a\0.\x82\x82`\0a\x005V[PPa\x03\xFBV[a\0>\x83a\0aV[`\0\x82Q\x11\x80a\0KWP\x80[\x15a\0\\Wa\0Z\x83\x83a\0\xA1V[P[PPPV[a\0j\x81a\0\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``a\0\xC6\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x04\xBA`'\x919a\x01\x80V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x01?W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01\x9D\x91\x90a\x03\xACV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xDDV[``\x91P[P\x90\x92P\x90Pa\x01\xEF\x86\x83\x83\x87a\x01\xF9V[\x96\x95PPPPPPV[``\x83\x15a\x02hW\x82Q`\0\x03a\x02aW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x02aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x016V[P\x81a\x02rV[a\x02r\x83\x83a\x02zV[\x94\x93PPPPV[\x81Q\x15a\x02\x8AW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x016\x91\x90a\x03\xC8V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x02\xD5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02\xBDV[PP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xF1W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x08W`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x03%W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x039W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x03KWa\x03Ka\x02\xA4V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03sWa\x03sa\x02\xA4V[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x03\x8CW`\0\x80\xFD[a\x03\x9D\x83` \x83\x01` \x88\x01a\x02\xBAV[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x82Qa\x03\xBE\x81\x84` \x87\x01a\x02\xBAV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x03\xE7\x81`@\x85\x01` \x87\x01a\x02\xBAV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\xB1\x80a\x04\t`\09`\0\xF3\xFE`\x80`@R6`\x10W`\x0E`\x13V[\0[`\x0E[`\x1F`\x1B`!V[`XV[V[`\0`S\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15`vW=`\0\xF3[=`\0\xFD\xFE\xA2dipfsX\"\x12 \x01\xC2\xA2\xA9\x95:\xD0\xC5\xC2\xA1]\\%\xC1-\x82 \x8F\xBA\xD7\x1D\xF7\xAA\x14\xC8\xBB\xA3\xE6\xA3\x96\x9E\xC8dsolcC\0\x08\x15\x003Address: low-level delegate call failed\xA2dipfsX\"\x12 \x13\xD1\x13\x97\x91\x1B\x81.\xA6e\x08#\x9B\xE6\x94\xFD\xC7\xF9x\"\n.\x96\x04\xAA1\xA6\xE5\x96\xBC\xF4\xDAdsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static SIMPLEACCOUNTFACTORY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct SimpleAccountFactory(::ethers::contract::Contract); + impl ::core::clone::Clone for SimpleAccountFactory { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for SimpleAccountFactory { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for SimpleAccountFactory { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for SimpleAccountFactory { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(SimpleAccountFactory)) + .field(&self.address()) + .finish() + } + } + impl SimpleAccountFactory { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + SIMPLEACCOUNTFACTORY_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + SIMPLEACCOUNTFACTORY_ABI.clone(), + SIMPLEACCOUNTFACTORY_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `accountImplementation` (0x11464fbe) function + pub fn account_implementation( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([17, 70, 79, 190], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `createAccount` (0x5fbfb9cf) function + pub fn create_account( + &self, + owner: ::ethers::core::types::Address, + salt: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([95, 191, 185, 207], (owner, salt)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getAddress` (0x8cb84e18) function + pub fn get_address( + &self, + owner: ::ethers::core::types::Address, + salt: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([140, 184, 78, 24], (owner, salt)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for SimpleAccountFactory { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `accountImplementation` function with signature `accountImplementation()` and selector `0x11464fbe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "accountImplementation", abi = "accountImplementation()")] + pub struct AccountImplementationCall; + ///Container type for all input parameters for the `createAccount` function with signature `createAccount(address,uint256)` and selector `0x5fbfb9cf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "createAccount", abi = "createAccount(address,uint256)")] + pub struct CreateAccountCall { + pub owner: ::ethers::core::types::Address, + pub salt: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getAddress` function with signature `getAddress(address,uint256)` and selector `0x8cb84e18` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getAddress", abi = "getAddress(address,uint256)")] + pub struct GetAddressCall { + pub owner: ::ethers::core::types::Address, + pub salt: ::ethers::core::types::U256, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum SimpleAccountFactoryCalls { + AccountImplementation(AccountImplementationCall), + CreateAccount(CreateAccountCall), + GetAddress(GetAddressCall), + } + impl ::ethers::core::abi::AbiDecode for SimpleAccountFactoryCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::AccountImplementation(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::CreateAccount(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetAddress(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for SimpleAccountFactoryCalls { + fn encode(self) -> Vec { + match self { + Self::AccountImplementation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::CreateAccount(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for SimpleAccountFactoryCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AccountImplementation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::CreateAccount(element) => ::core::fmt::Display::fmt(element, f), + Self::GetAddress(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for SimpleAccountFactoryCalls { + fn from(value: AccountImplementationCall) -> Self { + Self::AccountImplementation(value) + } + } + impl ::core::convert::From for SimpleAccountFactoryCalls { + fn from(value: CreateAccountCall) -> Self { + Self::CreateAccount(value) + } + } + impl ::core::convert::From for SimpleAccountFactoryCalls { + fn from(value: GetAddressCall) -> Self { + Self::GetAddress(value) + } + } + ///Container type for all return fields from the `accountImplementation` function with signature `accountImplementation()` and selector `0x11464fbe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct AccountImplementationReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `createAccount` function with signature `createAccount(address,uint256)` and selector `0x5fbfb9cf` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct CreateAccountReturn { + pub ret: ::ethers::core::types::Address, + } + ///Container type for all return fields from the `getAddress` function with signature `getAddress(address,uint256)` and selector `0x8cb84e18` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetAddressReturn(pub ::ethers::core::types::Address); +} diff --git a/crates/types/src/contracts/verifying_paymaster.rs b/crates/types/src/contracts/verifying_paymaster.rs new file mode 100644 index 000000000..d3ce3f2cb --- /dev/null +++ b/crates/types/src/contracts/verifying_paymaster.rs @@ -0,0 +1,1239 @@ +pub use verifying_paymaster::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types, +)] +pub mod verifying_paymaster { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("_entryPoint"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract IEntryPoint")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("_verifyingSigner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + } + ], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("addStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("addStake"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint32")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("deposit"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("deposit"), inputs : + ::std::vec![], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Payable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("entryPoint"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("entryPoint"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("contract IEntryPoint")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getDeposit"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getDeposit"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getHash"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("getHash"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validUntil"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validAfter"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("owner"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("owner"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("parsePaymasterAndData"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("parsePaymasterAndData"), inputs + : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("paymasterAndData"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("validUntil"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validAfter"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint48")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("signature"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::Pure, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("postOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("postOp"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("mode"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("enum IPaymaster.PostOpMode")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("context"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("actualGasCost"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("renounceOwnership"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("renounceOwnership"), inputs : + ::std::vec![], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("senderNonce"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("senderNonce"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("transferOwnership"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("transferOwnership"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("newOwner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("unlockStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("unlockStake"), inputs : + ::std::vec![], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("validatePaymasterUserOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("validatePaymasterUserOp"), + inputs : ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOp"), kind : + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes]), internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("struct UserOperation")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("userOpHash"), kind : + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes32")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("maxCost"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![::ethers::core::abi::ethabi::Param { + name : ::std::borrow::ToOwned::to_owned("context"), kind : + ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("bytes")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("validationData"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("verifyingSigner"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("verifyingSigner"), inputs : + ::std::vec![], outputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::string::String::new(), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address")), + }], constant : ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::View, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawStake"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { name : + ::std::borrow::ToOwned::to_owned("withdrawTo"), inputs : + ::std::vec![::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("withdrawAddress"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("address payable")), + }, ::ethers::core::abi::ethabi::Param { name : + ::std::borrow::ToOwned::to_owned("amount"), kind : + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + internal_type : + ::core::option::Option::Some(::std::borrow::ToOwned::to_owned("uint256")), + }], outputs : ::std::vec![], constant : + ::core::option::Option::None, state_mutability : + ::ethers::core::abi::ethabi::StateMutability::NonPayable, } + ], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { name : + ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), inputs + : ::std::vec![::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("previousOwner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }, ::ethers::core::abi::ethabi::EventParam { name : + ::std::borrow::ToOwned::to_owned("newOwner"), kind : + ::ethers::core::abi::ethabi::ParamType::Address, indexed : true, + }], anonymous : false, } + ], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static VERIFYINGPAYMASTER_ABI: ::ethers::contract::Lazy< + ::ethers::core::abi::Abi, + > = ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xC0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13\x9D8\x03\x80a\x13\x9D\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xB9V[\x81a\093a\0QV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\x80R\x16`\xA0RPa\0\xF3V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xB6W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xCCW`\0\x80\xFD[\x82Qa\0\xD7\x81a\0\xA1V[` \x84\x01Q\x90\x92Pa\0\xE8\x81a\0\xA1V[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa\x12Ma\x01P`\09`\0\x81\x81a\x01?\x01Ra\n\x98\x01R`\0\x81\x81a\x02n\x01R\x81\x81a\x03R\x01R\x81\x81a\x03\xE9\x01R\x81\x81a\x04\xFF\x01R\x81\x81a\x05\x93\x01R\x81\x81a\x06\n\x01R\x81\x81a\x06\x97\x01Ra\x08z\x01Ra\x12M`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xF3W`\x005`\xE0\x1C\x80c\xA9\xA24\t\x11a\0\x8AW\x80c\xC3\x99\xEC\x88\x11a\0YW\x80c\xC3\x99\xEC\x88\x14a\x02\xC5W\x80c\xD0\xE3\r\xB0\x14a\x02\xDAW\x80c\xF2\xFD\xE3\x8B\x14a\x02\xE2W\x80c\xF4e\xC7~\x14a\x03\x02W`\0\x80\xFD[\x80c\xA9\xA24\t\x14a\x02=`\0\xFD[PPPPPPV[a\x03\xC3a\x07\x86V[`@Qc\x04\x0B\x85\x0F`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c \\(x\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x9FW`\0\x80\xFD[a\x045a\x07\x86V[a\x04?`\0a\x07\xE0V[V[`\0\x806\x81a\x04T`T`\x14\x87\x89a\x10\xCDV[\x81\x01\x90a\x04a\x91\x90a\x10\xF7V[\x90\x94P\x92Pa\x04s\x85`T\x81\x89a\x10\xCDV[\x94\x97\x93\x96P\x94PPPV[`\0a\x04\x89\x84a\x080V[`\x01`\x01`\xA0\x1B\x03\x855\x16`\0\x90\x81R`\x01` \x90\x81R`@\x91\x82\x90 T\x91Qa\x04\xBC\x93\x92F\x920\x92\x89\x91\x89\x91\x01a\x11*V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[a\x04\xE3a\x08oV[a\x04\xEF\x84\x84\x84\x84a\x08\xDFV[PPPPV[a\x04\xFDa\x07\x86V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBB\x9F\xE6\xBF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05XW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xEFW=`\0\x80>=`\0\xFD[a\x05ta\x07\x86V[`@Qca\x1D.u`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xC2:\\\xEA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xD7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xEBW=`\0\x80>=`\0\xFD[PPPPPV[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06}\x91\x90a\x11zV[\x90P\x90V[`@Qc\xB7`\xFA\xF9`\xE0\x1B\x81R0`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB7`\xFA\xF9\x904\x90`$\x01`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x05\xD7W`\0\x80\xFD[a\x06\xECa\x07\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07VW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x07_\x81a\x07\xE0V[PV[```\0a\x07na\x08oV[a\x07y\x85\x85\x85a\t\x17V[\x91P\x91P[\x93P\x93\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04?W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x07MV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[``6`\0a\x08Ca\x01 \x85\x01\x85a\x11\x93V[\x91P\x91P\x83` \x81\x84\x03\x03`@Q\x94P` \x81\x01\x85\x01`@R\x80\x85R\x80\x82` \x87\x017PPPP\x91\x90PV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x04?W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x14\xD9[\x99\x19\\\x88\x1B\x9B\xDD\x08\x11[\x9D\x1C\x9ET\x1B\xDA[\x9D`Z\x1B`D\x82\x01R`d\x01a\x07MV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rlmust override`\x98\x1B`D\x82\x01R`d\x01a\x07MV[```\0\x80\x806\x81a\t0a\x01\xCCa\x01 \x8B\x01\x8Ba\x11\x93V[\x92\x96P\x90\x94P\x92P\x90P`@\x81\x14\x80a\tIWP`A\x81\x14[a\t\xBDW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FVerifyingPaymaster: invalid sign`D\x82\x01R\x7Fature length in paymasterAndData`d\x82\x01R`\x84\x01a\x07MV[`\0a\n a\t\xCD\x8B\x87\x87a\x04~V[`@Q\x7F\x19Ethereum Signed Message:\n32\0\0\0\0` \x82\x01R`<\x81\x01\x82\x90R`\0\x90`\\\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x8B5\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x92\x93P\x90a\nH\x83a\x11\xDAV[\x91\x90PUPa\n\x8D\x81\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0B\x1B\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\xF0Wa\n\xD1`\x01\x86\x86a\x0B?V[`@Q\x80` \x01`@R\x80`\0\x81RP\x90\x96P\x96PPPPPPa\x07~V[a\n\xFC`\0\x86\x86a\x0B?V[`@\x80Q` \x81\x01\x90\x91R`\0\x81R\x9B\x90\x9AP\x98PPPPPPPPPV[`\0\x80`\0a\x0B*\x85\x85a\x0BwV[\x91P\x91Pa\x0B7\x81a\x0B\xBCV[P\x93\x92PPPV[`\0`\xD0\x82e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x1B`\xA0\x84e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x1B\x85a\x0BgW`\0a\x0BjV[`\x01[`\xFF\x16\x17\x17\x94\x93PPPPV[`\0\x80\x82Q`A\x03a\x0B\xADW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x0B\xA1\x87\x82\x85\x85a\r\x06V[\x94P\x94PPPPa\x0B\xB5V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x0B\xD0Wa\x0B\xD0a\x12\x01V[\x03a\x0B\xD8WPV[`\x01\x81`\x04\x81\x11\x15a\x0B\xECWa\x0B\xECa\x12\x01V[\x03a\x0C9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07MV[`\x02\x81`\x04\x81\x11\x15a\x0CMWa\x0CMa\x12\x01V[\x03a\x0C\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x07MV[`\x03\x81`\x04\x81\x11\x15a\x0C\xAEWa\x0C\xAEa\x12\x01V[\x03a\x07_W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x07MV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\r=WP`\0\x90P`\x03a\r\xC1V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\r\x91W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xBAW`\0`\x01\x92P\x92PPa\r\xC1V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a\r\xDCW`\0\x80\xFD[\x815c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\r\xF0W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07_W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0E\x1FW`\0\x80\xFD[\x825a\x0E*\x81a\r\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x0EJW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0EbW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0B\xB5W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x0E\x8DW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xA4W`\0\x80\xFD[a\x0E\xB0\x85\x82\x86\x01a\x0E8V[\x90\x96\x90\x95P\x93PPPPV[`\0e\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16\x83R\x80\x86\x16` \x84\x01RP```@\x83\x01R\x82``\x83\x01R\x82\x84`\x80\x84\x017`\0`\x80\x84\x84\x01\x01R`\x80`\x1F\x19`\x1F\x85\x01\x16\x83\x01\x01\x90P\x95\x94PPPPPV[`\0a\x01`\x82\x84\x03\x12\x15a\x0F\x1BW`\0\x80\xFD[P\x91\x90PV[\x805e\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0FQW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0FhW`\0\x80\xFD[a\x0Ft\x86\x82\x87\x01a\x0F\x08V[\x93PPa\x0F\x83` \x85\x01a\x0F!V[\x91Pa\x0F\x91`@\x85\x01a\x0F!V[\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0F\xACW`\0\x80\xFD[\x815a\r\xF0\x81a\r\xF7V[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x0F\xCDW`\0\x80\xFD[\x845`\x03\x81\x10a\x0F\xDCW`\0\x80\xFD[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F\xF8W`\0\x80\xFD[a\x10\x04\x87\x82\x88\x01a\x0E8V[\x95\x98\x90\x97P\x94\x95`@\x015\x94\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x10,W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x10CW`\0\x80\xFD[a\x10O\x86\x82\x87\x01a\x0F\x08V[\x96` \x86\x015\x96P`@\x90\x95\x015\x94\x93PPPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x10\x8BW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x10oV[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`@\x81R`\0a\x10\xBE`@\x83\x01\x85a\x10eV[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0\x80\x85\x85\x11\x15a\x10\xDDW`\0\x80\xFD[\x83\x86\x11\x15a\x10\xEAW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\nW`\0\x80\xFD[a\x11\x13\x83a\x0F!V[\x91Pa\x11!` \x84\x01a\x0F!V[\x90P\x92P\x92\x90PV[`\xC0\x81R`\0a\x11=`\xC0\x83\x01\x89a\x10eV[` \x83\x01\x97\x90\x97RP`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16`@\x85\x01R``\x84\x01\x92\x90\x92Re\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\x80\x84\x01R\x16`\xA0\x90\x91\x01R\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x8CW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x11\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0B\xB5W`\0\x80\xFD[`\0`\x01\x82\x01a\x11\xFAWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 1\xA4@\x14<\xB8\xCC\"\x90\xF1`\rx\xBA\x13L\xF2R\xEA{\xFA\xF4\xC4%\xAD\x96\xBB\x9D\x15;\x15\x14dsolcC\0\x08\x15\x003"; + /// The bytecode of the contract. + pub static VERIFYINGPAYMASTER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\xF3W`\x005`\xE0\x1C\x80c\xA9\xA24\t\x11a\0\x8AW\x80c\xC3\x99\xEC\x88\x11a\0YW\x80c\xC3\x99\xEC\x88\x14a\x02\xC5W\x80c\xD0\xE3\r\xB0\x14a\x02\xDAW\x80c\xF2\xFD\xE3\x8B\x14a\x02\xE2W\x80c\xF4e\xC7~\x14a\x03\x02W`\0\x80\xFD[\x80c\xA9\xA24\t\x14a\x02=`\0\xFD[PPPPPPV[a\x03\xC3a\x07\x86V[`@Qc\x04\x0B\x85\x0F`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c \\(x\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x9FW`\0\x80\xFD[a\x045a\x07\x86V[a\x04?`\0a\x07\xE0V[V[`\0\x806\x81a\x04T`T`\x14\x87\x89a\x10\xCDV[\x81\x01\x90a\x04a\x91\x90a\x10\xF7V[\x90\x94P\x92Pa\x04s\x85`T\x81\x89a\x10\xCDV[\x94\x97\x93\x96P\x94PPPV[`\0a\x04\x89\x84a\x080V[`\x01`\x01`\xA0\x1B\x03\x855\x16`\0\x90\x81R`\x01` \x90\x81R`@\x91\x82\x90 T\x91Qa\x04\xBC\x93\x92F\x920\x92\x89\x91\x89\x91\x01a\x11*V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[a\x04\xE3a\x08oV[a\x04\xEF\x84\x84\x84\x84a\x08\xDFV[PPPPV[a\x04\xFDa\x07\x86V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBB\x9F\xE6\xBF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05XW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xEFW=`\0\x80>=`\0\xFD[a\x05ta\x07\x86V[`@Qca\x1D.u`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xC2:\\\xEA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xD7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xEBW=`\0\x80>=`\0\xFD[PPPPPV[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06}\x91\x90a\x11zV[\x90P\x90V[`@Qc\xB7`\xFA\xF9`\xE0\x1B\x81R0`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB7`\xFA\xF9\x904\x90`$\x01`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x05\xD7W`\0\x80\xFD[a\x06\xECa\x07\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07VW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x07_\x81a\x07\xE0V[PV[```\0a\x07na\x08oV[a\x07y\x85\x85\x85a\t\x17V[\x91P\x91P[\x93P\x93\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04?W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x07MV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[``6`\0a\x08Ca\x01 \x85\x01\x85a\x11\x93V[\x91P\x91P\x83` \x81\x84\x03\x03`@Q\x94P` \x81\x01\x85\x01`@R\x80\x85R\x80\x82` \x87\x017PPPP\x91\x90PV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x04?W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x14\xD9[\x99\x19\\\x88\x1B\x9B\xDD\x08\x11[\x9D\x1C\x9ET\x1B\xDA[\x9D`Z\x1B`D\x82\x01R`d\x01a\x07MV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rlmust override`\x98\x1B`D\x82\x01R`d\x01a\x07MV[```\0\x80\x806\x81a\t0a\x01\xCCa\x01 \x8B\x01\x8Ba\x11\x93V[\x92\x96P\x90\x94P\x92P\x90P`@\x81\x14\x80a\tIWP`A\x81\x14[a\t\xBDW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FVerifyingPaymaster: invalid sign`D\x82\x01R\x7Fature length in paymasterAndData`d\x82\x01R`\x84\x01a\x07MV[`\0a\n a\t\xCD\x8B\x87\x87a\x04~V[`@Q\x7F\x19Ethereum Signed Message:\n32\0\0\0\0` \x82\x01R`<\x81\x01\x82\x90R`\0\x90`\\\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x8B5\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x92\x93P\x90a\nH\x83a\x11\xDAV[\x91\x90PUPa\n\x8D\x81\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0B\x1B\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\xF0Wa\n\xD1`\x01\x86\x86a\x0B?V[`@Q\x80` \x01`@R\x80`\0\x81RP\x90\x96P\x96PPPPPPa\x07~V[a\n\xFC`\0\x86\x86a\x0B?V[`@\x80Q` \x81\x01\x90\x91R`\0\x81R\x9B\x90\x9AP\x98PPPPPPPPPV[`\0\x80`\0a\x0B*\x85\x85a\x0BwV[\x91P\x91Pa\x0B7\x81a\x0B\xBCV[P\x93\x92PPPV[`\0`\xD0\x82e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x1B`\xA0\x84e\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x1B\x85a\x0BgW`\0a\x0BjV[`\x01[`\xFF\x16\x17\x17\x94\x93PPPPV[`\0\x80\x82Q`A\x03a\x0B\xADW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x0B\xA1\x87\x82\x85\x85a\r\x06V[\x94P\x94PPPPa\x0B\xB5V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x0B\xD0Wa\x0B\xD0a\x12\x01V[\x03a\x0B\xD8WPV[`\x01\x81`\x04\x81\x11\x15a\x0B\xECWa\x0B\xECa\x12\x01V[\x03a\x0C9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07MV[`\x02\x81`\x04\x81\x11\x15a\x0CMWa\x0CMa\x12\x01V[\x03a\x0C\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x07MV[`\x03\x81`\x04\x81\x11\x15a\x0C\xAEWa\x0C\xAEa\x12\x01V[\x03a\x07_W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x07MV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\r=WP`\0\x90P`\x03a\r\xC1V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\r\x91W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xBAW`\0`\x01\x92P\x92PPa\r\xC1V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0` \x82\x84\x03\x12\x15a\r\xDCW`\0\x80\xFD[\x815c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\r\xF0W`\0\x80\xFD[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07_W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0E\x1FW`\0\x80\xFD[\x825a\x0E*\x81a\r\xF7V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x0EJW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0EbW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0B\xB5W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x0E\x8DW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xA4W`\0\x80\xFD[a\x0E\xB0\x85\x82\x86\x01a\x0E8V[\x90\x96\x90\x95P\x93PPPPV[`\0e\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16\x83R\x80\x86\x16` \x84\x01RP```@\x83\x01R\x82``\x83\x01R\x82\x84`\x80\x84\x017`\0`\x80\x84\x84\x01\x01R`\x80`\x1F\x19`\x1F\x85\x01\x16\x83\x01\x01\x90P\x95\x94PPPPPV[`\0a\x01`\x82\x84\x03\x12\x15a\x0F\x1BW`\0\x80\xFD[P\x91\x90PV[\x805e\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F7W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0FQW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0FhW`\0\x80\xFD[a\x0Ft\x86\x82\x87\x01a\x0F\x08V[\x93PPa\x0F\x83` \x85\x01a\x0F!V[\x91Pa\x0F\x91`@\x85\x01a\x0F!V[\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0F\xACW`\0\x80\xFD[\x815a\r\xF0\x81a\r\xF7V[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x0F\xCDW`\0\x80\xFD[\x845`\x03\x81\x10a\x0F\xDCW`\0\x80\xFD[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F\xF8W`\0\x80\xFD[a\x10\x04\x87\x82\x88\x01a\x0E8V[\x95\x98\x90\x97P\x94\x95`@\x015\x94\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x10,W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x10CW`\0\x80\xFD[a\x10O\x86\x82\x87\x01a\x0F\x08V[\x96` \x86\x015\x96P`@\x90\x95\x015\x94\x93PPPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x10\x8BW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x10oV[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`@\x81R`\0a\x10\xBE`@\x83\x01\x85a\x10eV[\x90P\x82` \x83\x01R\x93\x92PPPV[`\0\x80\x85\x85\x11\x15a\x10\xDDW`\0\x80\xFD[\x83\x86\x11\x15a\x10\xEAW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\nW`\0\x80\xFD[a\x11\x13\x83a\x0F!V[\x91Pa\x11!` \x84\x01a\x0F!V[\x90P\x92P\x92\x90PV[`\xC0\x81R`\0a\x11=`\xC0\x83\x01\x89a\x10eV[` \x83\x01\x97\x90\x97RP`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16`@\x85\x01R``\x84\x01\x92\x90\x92Re\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\x80\x84\x01R\x16`\xA0\x90\x91\x01R\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x8CW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x11\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0B\xB5W`\0\x80\xFD[`\0`\x01\x82\x01a\x11\xFAWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 1\xA4@\x14<\xB8\xCC\"\x90\xF1`\rx\xBA\x13L\xF2R\xEA{\xFA\xF4\xC4%\xAD\x96\xBB\x9D\x15;\x15\x14dsolcC\0\x08\x15\x003"; + /// The deployed bytecode of the contract. + pub static VERIFYINGPAYMASTER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __DEPLOYED_BYTECODE, + ); + pub struct VerifyingPaymaster(::ethers::contract::Contract); + impl ::core::clone::Clone for VerifyingPaymaster { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for VerifyingPaymaster { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for VerifyingPaymaster { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for VerifyingPaymaster { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(VerifyingPaymaster)) + .field(&self.address()) + .finish() + } + } + impl VerifyingPaymaster { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + VERIFYINGPAYMASTER_ABI.clone(), + client, + ), + ) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + VERIFYINGPAYMASTER_ABI.clone(), + VERIFYINGPAYMASTER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `addStake` (0x0396cb60) function + pub fn add_stake( + &self, + unstake_delay_sec: u32, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([3, 150, 203, 96], unstake_delay_sec) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `deposit` (0xd0e30db0) function + pub fn deposit(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([208, 227, 13, 176], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `entryPoint` (0xb0d691fe) function + pub fn entry_point( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([176, 214, 145, 254], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getDeposit` (0xc399ec88) function + pub fn get_deposit( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([195, 153, 236, 136], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getHash` (0x94e1fc19) function + pub fn get_hash( + &self, + user_op: UserOperation, + valid_until: u64, + valid_after: u64, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([148, 225, 252, 25], (user_op, valid_until, valid_after)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `owner` (0x8da5cb5b) function + pub fn owner( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([141, 165, 203, 91], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `parsePaymasterAndData` (0x94d4ad60) function + pub fn parse_paymaster_and_data( + &self, + paymaster_and_data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall< + M, + (u64, u64, ::ethers::core::types::Bytes), + > { + self.0 + .method_hash([148, 212, 173, 96], paymaster_and_data) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `postOp` (0xa9a23409) function + pub fn post_op( + &self, + mode: u8, + context: ::ethers::core::types::Bytes, + actual_gas_cost: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([169, 162, 52, 9], (mode, context, actual_gas_cost)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `renounceOwnership` (0x715018a6) function + pub fn renounce_ownership( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([113, 80, 24, 166], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `senderNonce` (0x9c90b443) function + pub fn sender_nonce( + &self, + p0: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([156, 144, 180, 67], p0) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `transferOwnership` (0xf2fde38b) function + pub fn transfer_ownership( + &self, + new_owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([242, 253, 227, 139], new_owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `unlockStake` (0xbb9fe6bf) function + pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([187, 159, 230, 191], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validatePaymasterUserOp` (0xf465c77e) function + pub fn validate_paymaster_user_op( + &self, + user_op: UserOperation, + user_op_hash: [u8; 32], + max_cost: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + (::ethers::core::types::Bytes, ::ethers::core::types::U256), + > { + self.0 + .method_hash([244, 101, 199, 126], (user_op, user_op_hash, max_cost)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `verifyingSigner` (0x23d9ac9b) function + pub fn verifying_signer( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([35, 217, 172, 155], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawStake` (0xc23a5cea) function + pub fn withdraw_stake( + &self, + withdraw_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([194, 58, 92, 234], withdraw_address) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawTo` (0x205c2878) function + pub fn withdraw_to( + &self, + withdraw_address: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 92, 40, 120], (withdraw_address, amount)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `OwnershipTransferred` event + pub fn ownership_transferred_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + OwnershipTransferredFilter, + > { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + OwnershipTransferredFilter, + > { + self.0.event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for VerifyingPaymaster { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "OwnershipTransferred", + abi = "OwnershipTransferred(address,address)" + )] + pub struct OwnershipTransferredFilter { + #[ethevent(indexed)] + pub previous_owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub new_owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "addStake", abi = "addStake(uint32)")] + pub struct AddStakeCall { + pub unstake_delay_sec: u32, + } + ///Container type for all input parameters for the `deposit` function with signature `deposit()` and selector `0xd0e30db0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "deposit", abi = "deposit()")] + pub struct DepositCall; + ///Container type for all input parameters for the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "entryPoint", abi = "entryPoint()")] + pub struct EntryPointCall; + ///Container type for all input parameters for the `getDeposit` function with signature `getDeposit()` and selector `0xc399ec88` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getDeposit", abi = "getDeposit()")] + pub struct GetDepositCall; + ///Container type for all input parameters for the `getHash` function with signature `getHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint48,uint48)` and selector `0x94e1fc19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "getHash", + abi = "getHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint48,uint48)" + )] + pub struct GetHashCall { + pub user_op: UserOperation, + pub valid_until: u64, + pub valid_after: u64, + } + ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "owner", abi = "owner()")] + pub struct OwnerCall; + ///Container type for all input parameters for the `parsePaymasterAndData` function with signature `parsePaymasterAndData(bytes)` and selector `0x94d4ad60` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "parsePaymasterAndData", abi = "parsePaymasterAndData(bytes)")] + pub struct ParsePaymasterAndDataCall { + pub paymaster_and_data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `postOp` function with signature `postOp(uint8,bytes,uint256)` and selector `0xa9a23409` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "postOp", abi = "postOp(uint8,bytes,uint256)")] + pub struct PostOpCall { + pub mode: u8, + pub context: ::ethers::core::types::Bytes, + pub actual_gas_cost: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `renounceOwnership` function with signature `renounceOwnership()` and selector `0x715018a6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] + pub struct RenounceOwnershipCall; + ///Container type for all input parameters for the `senderNonce` function with signature `senderNonce(address)` and selector `0x9c90b443` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "senderNonce", abi = "senderNonce(address)")] + pub struct SenderNonceCall(pub ::ethers::core::types::Address); + ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] + pub struct TransferOwnershipCall { + pub new_owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "unlockStake", abi = "unlockStake()")] + pub struct UnlockStakeCall; + ///Container type for all input parameters for the `validatePaymasterUserOp` function with signature `validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0xf465c77e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "validatePaymasterUserOp", + abi = "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" + )] + pub struct ValidatePaymasterUserOpCall { + pub user_op: UserOperation, + pub user_op_hash: [u8; 32], + pub max_cost: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `verifyingSigner` function with signature `verifyingSigner()` and selector `0x23d9ac9b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "verifyingSigner", abi = "verifyingSigner()")] + pub struct VerifyingSignerCall; + ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] + pub struct WithdrawStakeCall { + pub withdraw_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] + pub struct WithdrawToCall { + pub withdraw_address: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum VerifyingPaymasterCalls { + AddStake(AddStakeCall), + Deposit(DepositCall), + EntryPoint(EntryPointCall), + GetDeposit(GetDepositCall), + GetHash(GetHashCall), + Owner(OwnerCall), + ParsePaymasterAndData(ParsePaymasterAndDataCall), + PostOp(PostOpCall), + RenounceOwnership(RenounceOwnershipCall), + SenderNonce(SenderNonceCall), + TransferOwnership(TransferOwnershipCall), + UnlockStake(UnlockStakeCall), + ValidatePaymasterUserOp(ValidatePaymasterUserOpCall), + VerifyingSigner(VerifyingSignerCall), + WithdrawStake(WithdrawStakeCall), + WithdrawTo(WithdrawToCall), + } + impl ::ethers::core::abi::AbiDecode for VerifyingPaymasterCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::AddStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Deposit(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::EntryPoint(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetDeposit(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::GetHash(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Owner(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ParsePaymasterAndData(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::PostOp(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::RenounceOwnership(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::SenderNonce(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::TransferOwnership(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::UnlockStake(decoded)); + } + if let Ok(decoded) + = ::decode( + data, + ) { + return Ok(Self::ValidatePaymasterUserOp(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::VerifyingSigner(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::WithdrawStake(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::WithdrawTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for VerifyingPaymasterCalls { + fn encode(self) -> Vec { + match self { + Self::AddStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Deposit(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::EntryPoint(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetDeposit(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ParsePaymasterAndData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::PostOp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RenounceOwnership(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SenderNonce(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TransferOwnership(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UnlockStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidatePaymasterUserOp(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::VerifyingSigner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WithdrawTo(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for VerifyingPaymasterCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), + Self::Deposit(element) => ::core::fmt::Display::fmt(element, f), + Self::EntryPoint(element) => ::core::fmt::Display::fmt(element, f), + Self::GetDeposit(element) => ::core::fmt::Display::fmt(element, f), + Self::GetHash(element) => ::core::fmt::Display::fmt(element, f), + Self::Owner(element) => ::core::fmt::Display::fmt(element, f), + Self::ParsePaymasterAndData(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::PostOp(element) => ::core::fmt::Display::fmt(element, f), + Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f), + Self::SenderNonce(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), + Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidatePaymasterUserOp(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::VerifyingSigner(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: AddStakeCall) -> Self { + Self::AddStake(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: DepositCall) -> Self { + Self::Deposit(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: EntryPointCall) -> Self { + Self::EntryPoint(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: GetDepositCall) -> Self { + Self::GetDeposit(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: GetHashCall) -> Self { + Self::GetHash(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: OwnerCall) -> Self { + Self::Owner(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: ParsePaymasterAndDataCall) -> Self { + Self::ParsePaymasterAndData(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: PostOpCall) -> Self { + Self::PostOp(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: RenounceOwnershipCall) -> Self { + Self::RenounceOwnership(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: SenderNonceCall) -> Self { + Self::SenderNonce(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: TransferOwnershipCall) -> Self { + Self::TransferOwnership(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: UnlockStakeCall) -> Self { + Self::UnlockStake(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: ValidatePaymasterUserOpCall) -> Self { + Self::ValidatePaymasterUserOp(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: VerifyingSignerCall) -> Self { + Self::VerifyingSigner(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: WithdrawStakeCall) -> Self { + Self::WithdrawStake(value) + } + } + impl ::core::convert::From for VerifyingPaymasterCalls { + fn from(value: WithdrawToCall) -> Self { + Self::WithdrawTo(value) + } + } + ///Container type for all return fields from the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct EntryPointReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `getDeposit` function with signature `getDeposit()` and selector `0xc399ec88` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetDepositReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getHash` function with signature `getHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint48,uint48)` and selector `0x94e1fc19` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetHashReturn(pub [u8; 32]); + ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OwnerReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `parsePaymasterAndData` function with signature `parsePaymasterAndData(bytes)` and selector `0x94d4ad60` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ParsePaymasterAndDataReturn { + pub valid_until: u64, + pub valid_after: u64, + pub signature: ::ethers::core::types::Bytes, + } + ///Container type for all return fields from the `senderNonce` function with signature `senderNonce(address)` and selector `0x9c90b443` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct SenderNonceReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `validatePaymasterUserOp` function with signature `validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0xf465c77e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ValidatePaymasterUserOpReturn { + pub context: ::ethers::core::types::Bytes, + pub validation_data: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `verifyingSigner` function with signature `verifyingSigner()` and selector `0x23d9ac9b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct VerifyingSignerReturn(pub ::ethers::core::types::Address); +}