From 822174a5de74f86c333dc938b233e9ac651cba4d Mon Sep 17 00:00:00 2001 From: jj1980a Date: Tue, 19 Nov 2024 17:15:38 +0400 Subject: [PATCH 1/6] refactor to handle multiple atlas versions --- Makefile | 20 +- config/chain.go | 70 +- config/download.go | 7 +- contract/abi.go | 103 +- contract/atlas/{ => 1.0.0}/abi.json | 2 +- contract/atlas/{ => 1.0.0}/atlas.go | 20 +- contract/atlas/1.0.1/abi.json | 1 + contract/atlas/1.0.1/atlas.go | 4189 ++++++++++++++++ contract/atlas/1.1.0/abi.json | 1 + contract/atlas/1.1.0/atlas.go | 4209 +++++++++++++++++ .../atlasverification/{ => 1.0.0}/abi.json | 0 .../{ => 1.0.0}/atlasverification.go | 2 +- contract/atlasverification/1.0.1/abi.json | 1 + .../1.0.1/atlasverification.go | 1765 +++++++ contract/atlasverification/1.1.0/abi.json | 1 + .../1.1.0/atlasverification.go | 1765 +++++++ contract/simulator/{ => 1.0.0}/abi.json | 0 contract/simulator/{ => 1.0.0}/simulator.go | 2 +- contract/simulator/1.0.1/abi.json | 1 + contract/simulator/1.0.1/simulator.go | 602 +++ contract/simulator/1.1.0/abi.json | 1 + contract/simulator/1.1.0/simulator.go | 602 +++ contract/sorter/{ => 1.0.0}/abi.json | 0 contract/sorter/{ => 1.0.0}/sorter.go | 2 +- contract/sorter/1.0.1/abi.json | 1 + contract/sorter/1.0.1/sorter.go | 307 ++ contract/sorter/1.1.0/abi.json | 1 + contract/sorter/1.1.0/sorter.go | 307 ++ core/atlas.go | 74 +- core/atleth.go | 58 +- core/nonce.go | 155 +- core/sdk.go | 113 +- core/simulate.go | 77 +- core/sorter.go | 88 +- types/dapp_operation.go | 8 +- types/dapp_operation_test.go | 4 +- types/solver_operation.go | 8 +- types/solver_operation_test.go | 4 +- types/test_test.go | 3 +- types/user_operation.go | 12 +- types/user_operation_test.go | 6 +- 41 files changed, 14266 insertions(+), 326 deletions(-) rename contract/atlas/{ => 1.0.0}/abi.json (51%) rename contract/atlas/{ => 1.0.0}/atlas.go (91%) create mode 100644 contract/atlas/1.0.1/abi.json create mode 100644 contract/atlas/1.0.1/atlas.go create mode 100644 contract/atlas/1.1.0/abi.json create mode 100644 contract/atlas/1.1.0/atlas.go rename contract/atlasverification/{ => 1.0.0}/abi.json (100%) rename contract/atlasverification/{ => 1.0.0}/atlasverification.go (99%) create mode 100644 contract/atlasverification/1.0.1/abi.json create mode 100644 contract/atlasverification/1.0.1/atlasverification.go create mode 100644 contract/atlasverification/1.1.0/abi.json create mode 100644 contract/atlasverification/1.1.0/atlasverification.go rename contract/simulator/{ => 1.0.0}/abi.json (100%) rename contract/simulator/{ => 1.0.0}/simulator.go (99%) create mode 100644 contract/simulator/1.0.1/abi.json create mode 100644 contract/simulator/1.0.1/simulator.go create mode 100644 contract/simulator/1.1.0/abi.json create mode 100644 contract/simulator/1.1.0/simulator.go rename contract/sorter/{ => 1.0.0}/abi.json (100%) rename contract/sorter/{ => 1.0.0}/sorter.go (99%) create mode 100644 contract/sorter/1.0.1/abi.json create mode 100644 contract/sorter/1.0.1/sorter.go create mode 100644 contract/sorter/1.1.0/abi.json create mode 100644 contract/sorter/1.1.0/sorter.go diff --git a/Makefile b/Makefile index c43d82e..b85226f 100644 --- a/Makefile +++ b/Makefile @@ -5,8 +5,20 @@ test: $(GOTEST) --timeout 5m $(TESTALL) contracts-bindings: - abigen --abi ./contract/atlas/abi.json --pkg atlas --type Atlas --out ./contract/atlas/atlas.go - abigen --abi ./contract/atlasverification/abi.json --pkg atlasverification --type AtlasVerification --out ./contract/atlasverification/atlasverification.go + abigen --abi ./contract/atlas/1.0.0/abi.json --pkg atlas_1_0_0 --type Atlas --out ./contract/atlas/1.0.0/atlas.go + abigen --abi ./contract/atlas/1.0.1/abi.json --pkg atlas_1_0_1 --type Atlas --out ./contract/atlas/1.0.1/atlas.go + abigen --abi ./contract/atlas/1.1.0/abi.json --pkg atlas_1_1_0 --type Atlas --out ./contract/atlas/1.1.0/atlas.go + + abigen --abi ./contract/atlasverification/1.0.0/abi.json --pkg atlasverification_1_0_0 --type AtlasVerification --out ./contract/atlasverification/1.0.0/atlasverification.go + abigen --abi ./contract/atlasverification/1.0.1/abi.json --pkg atlasverification_1_0_1 --type AtlasVerification --out ./contract/atlasverification/1.0.1/atlasverification.go + abigen --abi ./contract/atlasverification/1.1.0/abi.json --pkg atlasverification_1_1_0 --type AtlasVerification --out ./contract/atlasverification/1.1.0/atlasverification.go + + abigen --abi ./contract/simulator/1.0.0/abi.json --pkg simulator_1_0_0 --type Simulator --out ./contract/simulator/1.0.0/simulator.go + abigen --abi ./contract/simulator/1.0.1/abi.json --pkg simulator_1_0_1 --type Simulator --out ./contract/simulator/1.0.1/simulator.go + abigen --abi ./contract/simulator/1.1.0/abi.json --pkg simulator_1_1_0 --type Simulator --out ./contract/simulator/1.1.0/simulator.go + + abigen --abi ./contract/sorter/1.0.0/abi.json --pkg sorter_1_0_0 --type Sorter --out ./contract/sorter/1.0.0/sorter.go + abigen --abi ./contract/sorter/1.0.1/abi.json --pkg sorter_1_0_1 --type Sorter --out ./contract/sorter/1.0.1/sorter.go + abigen --abi ./contract/sorter/1.1.0/abi.json --pkg sorter_1_1_0 --type Sorter --out ./contract/sorter/1.1.0/sorter.go + abigen --abi ./contract/dappcontrol/abi.json --pkg dappcontrol --type DAppControl --out ./contract/dappcontrol/dappcontrol.go - abigen --abi ./contract/simulator/abi.json --pkg simulator --type Simulator --out ./contract/simulator/simulator.go - abigen --abi ./contract/sorter/abi.json --pkg sorter --type Sorter --out ./contract/sorter/sorter.go diff --git a/config/chain.go b/config/chain.go index 0ab7b9a..ce7c43c 100644 --- a/config/chain.go +++ b/config/chain.go @@ -22,11 +22,20 @@ type ChainConfig struct { Eip712Domain *apitypes.TypedDataDomain `json:"eip712Domain"` } +const ( + AtlasV_1_0_0 = "1.0.0" + AtlasV_1_0_1 = "1.0.1" + AtlasV_1_1_0 = "1.1.0" + AtlasVLatest = AtlasV_1_1_0 +) + var ( DEFAULT_MULTICALL3 = common.HexToAddress("0xcA11bde05977b3631167028862bE2a173976CA11") - chainConfig = map[uint64]*ChainConfig{} + chainConfig = map[uint64]map[string]*ChainConfig{} // Indexed by [chainId][atlasVersion] initOnce sync.Once mu sync.RWMutex + + allVersions = []string{AtlasV_1_0_0, AtlasV_1_0_1, AtlasV_1_1_0} ) func initChainConfig() error { @@ -60,22 +69,39 @@ func initChainConfig() error { return initErr } -func GetChainConfig(chainId uint64) (*ChainConfig, error) { +func GetAllVersions() []string { + v := make([]string, len(allVersions)) + copy(v, allVersions) + return v +} + +func GetVersion(version *string) string { + if version == nil { + return AtlasVLatest + } + + return *version +} + +func GetChainConfig(chainId uint64, version *string) (*ChainConfig, error) { if err := initChainConfig(); err != nil { return nil, err } + v := GetVersion(version) + mu.RLock() defer mu.RUnlock() - if chainConfig[chainId] == nil { - return nil, fmt.Errorf("chain config not found for chain id %d", chainId) + _chainConfig, ok := chainConfig[chainId][v] + if !ok { + return nil, fmt.Errorf("chain config not found for chain id %d and version %s", chainId, v) } - return chainConfig[chainId], nil + return _chainConfig, nil } -func OverrideChainConfig(chainId uint64, config *ChainConfig) error { +func OverrideChainConfig(chainId uint64, version *string, config *ChainConfig) error { if config.Contract == nil { return errors.New("contract config is required") } @@ -120,15 +146,21 @@ func OverrideChainConfig(chainId uint64, config *ChainConfig) error { return errors.New("eip712 domain verifying contract is invalid") } + v := GetVersion(version) + mu.Lock() defer mu.Unlock() - chainConfig[chainId] = config + if chainConfig[chainId] == nil { + chainConfig[chainId] = make(map[string]*ChainConfig) + } + + chainConfig[chainId][v] = config return nil } -func GetAtlasAddress(chainId uint64) (common.Address, error) { - chainConf, err := GetChainConfig(chainId) +func GetAtlasAddress(chainId uint64, version *string) (common.Address, error) { + chainConf, err := GetChainConfig(chainId, version) if err != nil { return common.Address{}, err } @@ -136,8 +168,8 @@ func GetAtlasAddress(chainId uint64) (common.Address, error) { return chainConf.Contract.Atlas, nil } -func GetAtlasVerificationAddress(chainId uint64) (common.Address, error) { - chainConf, err := GetChainConfig(chainId) +func GetAtlasVerificationAddress(chainId uint64, version *string) (common.Address, error) { + chainConf, err := GetChainConfig(chainId, version) if err != nil { return common.Address{}, err } @@ -145,8 +177,8 @@ func GetAtlasVerificationAddress(chainId uint64) (common.Address, error) { return chainConf.Contract.AtlasVerification, nil } -func GetSorterAddress(chainId uint64) (common.Address, error) { - chainConf, err := GetChainConfig(chainId) +func GetSorterAddress(chainId uint64, version *string) (common.Address, error) { + chainConf, err := GetChainConfig(chainId, version) if err != nil { return common.Address{}, err } @@ -154,8 +186,8 @@ func GetSorterAddress(chainId uint64) (common.Address, error) { return chainConf.Contract.Sorter, nil } -func GetSimulatorAddress(chainId uint64) (common.Address, error) { - chainConf, err := GetChainConfig(chainId) +func GetSimulatorAddress(chainId uint64, version *string) (common.Address, error) { + chainConf, err := GetChainConfig(chainId, version) if err != nil { return common.Address{}, err } @@ -163,8 +195,8 @@ func GetSimulatorAddress(chainId uint64) (common.Address, error) { return chainConf.Contract.Simulator, nil } -func GetMulticall3Address(chainId uint64) (common.Address, error) { - chainConf, err := GetChainConfig(chainId) +func GetMulticall3Address(chainId uint64, version *string) (common.Address, error) { + chainConf, err := GetChainConfig(chainId, version) if err != nil { return common.Address{}, err } @@ -172,8 +204,8 @@ func GetMulticall3Address(chainId uint64) (common.Address, error) { return chainConf.Contract.Multicall3, nil } -func GetEip712Domain(chainId uint64) (*apitypes.TypedDataDomain, error) { - chainConf, err := GetChainConfig(chainId) +func GetEip712Domain(chainId uint64, version *string) (*apitypes.TypedDataDomain, error) { + chainConf, err := GetChainConfig(chainId, version) if err != nil { return nil, err } diff --git a/config/download.go b/config/download.go index 4c38245..aad4c98 100644 --- a/config/download.go +++ b/config/download.go @@ -7,10 +7,11 @@ import ( ) const ( - ChainConfigUrl = "https://raw.githubusercontent.com/FastLane-Labs/atlas-config/refs/heads/main/configs/chain-config.json" + // ChainConfigUrl = "https://raw.githubusercontent.com/FastLane-Labs/atlas-config/refs/heads/main/configs/chain-config.json" + ChainConfigUrl = "https://raw.githubusercontent.com/FastLane-Labs/atlas-config/refs/heads/atlas-multi-version/configs/chain-config.json" ) -func downloadChainConfig() (map[uint64]*ChainConfig, error) { +func downloadChainConfig() (map[uint64]map[string]*ChainConfig, error) { resp, err := http.Get(ChainConfigUrl) if err != nil { return nil, err @@ -23,7 +24,7 @@ func downloadChainConfig() (map[uint64]*ChainConfig, error) { return nil, err } - remoteConfig := make(map[uint64]*ChainConfig) + remoteConfig := make(map[uint64]map[string]*ChainConfig) err = json.Unmarshal(body, &remoteConfig) if err != nil { diff --git a/contract/abi.go b/contract/abi.go index e23d67b..21929ec 100644 --- a/contract/abi.go +++ b/contract/abi.go @@ -1,17 +1,102 @@ package contract import ( - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification" + "errors" + + "github.com/FastLane-Labs/atlas-sdk-go/config" + "github.com/ethereum/go-ethereum/accounts/abi" + + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.0.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.0.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.1.0" + + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.0.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.0.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.1.0" + + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.0.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.0.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.1.0" + + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.0.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.0.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/dappcontrol" - "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator" - "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter" ) var ( - AtlasAbi, _ = atlas.AtlasMetaData.GetAbi() - AtlasVerificationAbi, _ = atlasverification.AtlasVerificationMetaData.GetAbi() - SimulatorAbi, _ = simulator.SimulatorMetaData.GetAbi() - SorterAbi, _ = sorter.SorterMetaData.GetAbi() - DAppControlAbi, _ = dappcontrol.DAppControlMetaData.GetAbi() + atlas_1_0_0_Abi, _ = atlas_1_0_0.AtlasMetaData.GetAbi() + atlas_1_0_1_Abi, _ = atlas_1_0_1.AtlasMetaData.GetAbi() + atlas_1_1_0_Abi, _ = atlas_1_1_0.AtlasMetaData.GetAbi() + + atlasverification_1_0_0_Abi, _ = atlasverification_1_0_0.AtlasVerificationMetaData.GetAbi() + atlasverification_1_0_1_Abi, _ = atlasverification_1_0_1.AtlasVerificationMetaData.GetAbi() + atlasverification_1_1_0_Abi, _ = atlasverification_1_1_0.AtlasVerificationMetaData.GetAbi() + + simulator_1_0_0_Abi, _ = simulator_1_0_0.SimulatorMetaData.GetAbi() + simulator_1_0_1_Abi, _ = simulator_1_0_1.SimulatorMetaData.GetAbi() + simulator_1_1_0_Abi, _ = simulator_1_1_0.SimulatorMetaData.GetAbi() + + sorter_1_0_0_Abi, _ = sorter_1_0_0.SorterMetaData.GetAbi() + sorter_1_0_1_Abi, _ = sorter_1_0_1.SorterMetaData.GetAbi() + sorter_1_1_0_Abi, _ = sorter_1_1_0.SorterMetaData.GetAbi() + + dappcontrol_Abi, _ = dappcontrol.DAppControlMetaData.GetAbi() +) + +var ( + errInvalidAtlasVersion = errors.New("invalid atlas version") ) + +func GetAtlasAbi(version *string) (*abi.ABI, error) { + switch config.GetVersion(version) { + case config.AtlasV_1_0_0: + return atlas_1_0_0_Abi, nil + case config.AtlasV_1_0_1: + return atlas_1_0_1_Abi, nil + case config.AtlasV_1_1_0: + return atlas_1_1_0_Abi, nil + } + return nil, errInvalidAtlasVersion +} + +func GetAtlasVerificationAbi(version *string) (*abi.ABI, error) { + switch config.GetVersion(version) { + case config.AtlasV_1_0_0: + return atlasverification_1_0_0_Abi, nil + case config.AtlasV_1_0_1: + return atlasverification_1_0_1_Abi, nil + case config.AtlasV_1_1_0: + return atlasverification_1_1_0_Abi, nil + } + return nil, errInvalidAtlasVersion +} + +func GetSimulatorAbi(version *string) (*abi.ABI, error) { + switch config.GetVersion(version) { + case config.AtlasV_1_0_0: + return simulator_1_0_0_Abi, nil + case config.AtlasV_1_0_1: + return simulator_1_0_1_Abi, nil + case config.AtlasV_1_1_0: + return simulator_1_1_0_Abi, nil + } + return nil, errInvalidAtlasVersion +} + +func GetSorterAbi(version *string) (*abi.ABI, error) { + switch config.GetVersion(version) { + case config.AtlasV_1_0_0: + return sorter_1_0_0_Abi, nil + case config.AtlasV_1_0_1: + return sorter_1_0_1_Abi, nil + case config.AtlasV_1_1_0: + return sorter_1_1_0_Abi, nil + } + return nil, errInvalidAtlasVersion +} + +func GetDAppControlAbi() *abi.ABI { + return dappcontrol_Abi +} diff --git a/contract/atlas/abi.json b/contract/atlas/1.0.0/abi.json similarity index 51% rename from contract/atlas/abi.json rename to contract/atlas/1.0.0/abi.json index 394dae1..f045cc3 100644 --- a/contract/atlas/abi.json +++ b/contract/atlas/1.0.0/abi.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint256","name":"escrowDuration","type":"uint256"},{"internalType":"address","name":"verification","type":"address"},{"internalType":"address","name":"simulator","type":"address"},{"internalType":"address","name":"initialSurchargeRecipient","type":"address"},{"internalType":"address","name":"l2GasCalculator","type":"address"},{"internalType":"address","name":"executionTemplate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllocateValueDelegatecallFail","type":"error"},{"inputs":[],"name":"AllocateValueFail","type":"error"},{"inputs":[],"name":"AllocateValueSimFail","type":"error"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"AlteredControl","type":"error"},{"inputs":[],"name":"AtlasLockActive","type":"error"},{"inputs":[],"name":"BalanceNotReconciled","type":"error"},{"inputs":[{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidFindSuccessful","type":"error"},{"inputs":[],"name":"BidNotPaid","type":"error"},{"inputs":[{"internalType":"uint256","name":"indexInSolverOps","type":"uint256"},{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidTooHigh","type":"error"},{"inputs":[],"name":"BothPreOpsAndUserReturnDataCannotBeTracked","type":"error"},{"inputs":[],"name":"BothUserAndDAppNoncesCannotBeSequential","type":"error"},{"inputs":[],"name":"CallbackNotCalled","type":"error"},{"inputs":[],"name":"DAppNotEnabled","type":"error"},{"inputs":[],"name":"DoubleReconcile","type":"error"},{"inputs":[],"name":"EnvironmentMismatch","type":"error"},{"inputs":[],"name":"EscrowLockActive","type":"error"},{"inputs":[],"name":"ExecutionEnvironmentBalanceTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientAtlETHBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientAvailableBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBalanceForDeduction","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBondedBalance","type":"error"},{"inputs":[],"name":"InsufficientEscrow","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientLocalFunds","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint256","name":"holds","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientSolverBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientSurchargeBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"shortfall","type":"uint256"}],"name":"InsufficientTotalBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientUnbondedBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientWithdrawableBalance","type":"error"},{"inputs":[],"name":"InvalidAccess","type":"error"},{"inputs":[],"name":"InvalidCaller","type":"error"},{"inputs":[],"name":"InvalidCodeHash","type":"error"},{"inputs":[],"name":"InvalidControl","type":"error"},{"inputs":[],"name":"InvalidDAppControl","type":"error"},{"inputs":[],"name":"InvalidEntry","type":"error"},{"inputs":[],"name":"InvalidEntryFunction","type":"error"},{"inputs":[],"name":"InvalidEnvironment","type":"error"},{"inputs":[],"name":"InvalidEscrowDuration","type":"error"},{"inputs":[{"internalType":"address","name":"correctEnvironment","type":"address"}],"name":"InvalidExecutionEnvironment","type":"error"},{"inputs":[],"name":"InvalidLockState","type":"error"},{"inputs":[],"name":"InvalidSignatory","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidSolver","type":"error"},{"inputs":[{"internalType":"address","name":"solverFrom","type":"address"}],"name":"InvalidSolverFrom","type":"error"},{"inputs":[],"name":"InvalidTo","type":"error"},{"inputs":[],"name":"InvalidUser","type":"error"},{"inputs":[],"name":"InvertBidValueCannotBeExPostBids","type":"error"},{"inputs":[],"name":"InvertedBidExceedsCeiling","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerBalancing","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerFinalized","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"MissingFunds","type":"error"},{"inputs":[],"name":"MustBeDelegatecalled","type":"error"},{"inputs":[],"name":"NoAuctionWinner","type":"error"},{"inputs":[],"name":"NoDelegatecall","type":"error"},{"inputs":[],"name":"NoUnfilledRequests","type":"error"},{"inputs":[],"name":"NoUnusedNonceInBitmap","type":"error"},{"inputs":[],"name":"NotEnvironmentOwner","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[],"name":"NotInitialized","type":"error"},{"inputs":[],"name":"OnlyAtlas","type":"error"},{"inputs":[],"name":"OnlyGovernance","type":"error"},{"inputs":[],"name":"PermitDeadlineExpired","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallReturnedFalse","type":"error"},{"inputs":[],"name":"PostOpsFail","type":"error"},{"inputs":[],"name":"PostOpsSimFail","type":"error"},{"inputs":[],"name":"PostSolverFailed","type":"error"},{"inputs":[],"name":"PreOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PreOpsFail","type":"error"},{"inputs":[],"name":"PreOpsSimFail","type":"error"},{"inputs":[],"name":"PreSolverFailed","type":"error"},{"inputs":[],"name":"SignatoryActive","type":"error"},{"inputs":[],"name":"SimulationPassed","type":"error"},{"inputs":[],"name":"SolverMustReconcile","type":"error"},{"inputs":[],"name":"SolverOpReverted","type":"error"},{"inputs":[{"internalType":"uint256","name":"solverOutcomeResult","type":"uint256"}],"name":"SolverSimFail","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnbalancedAccounting","type":"error"},{"inputs":[],"name":"UncoveredResult","type":"error"},{"inputs":[],"name":"UnexpectedNonRevert","type":"error"},{"inputs":[],"name":"Unreachable","type":"error"},{"inputs":[],"name":"UserNotFulfilled","type":"error"},{"inputs":[],"name":"UserOpFail","type":"error"},{"inputs":[],"name":"UserOpSimFail","type":"error"},{"inputs":[],"name":"UserOpValueExceedsBalance","type":"error"},{"inputs":[],"name":"UserSimulationFailed","type":"error"},{"inputs":[],"name":"UserSimulationSucceeded","type":"error"},{"inputs":[],"name":"UserUnexpectedSuccess","type":"error"},{"inputs":[],"name":"UserWrapperCallFail","type":"error"},{"inputs":[],"name":"UserWrapperDelegatecallFail","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"ValidCalls","type":"error"},{"inputs":[],"name":"ValueTooLarge","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"VerificationSimFail","type":"error"},{"inputs":[],"name":"WrongDepth","type":"error"},{"inputs":[],"name":"WrongPhase","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Bond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"oldGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppGovernanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"executionEnvironment","type":"address"}],"name":"ExecutionEnvironmentCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bundler","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"solverSuccessful","type":"bool"},{"indexed":false,"internalType":"bool","name":"disbursementSuccessful","type":"bool"},{"indexed":false,"internalType":"uint256","name":"ethPaidToBundler","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netGasSurcharge","type":"uint256"}],"name":"MetacallResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"NewDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"RemovedDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"solverTo","type":"address"},{"indexed":true,"internalType":"address","name":"solverFrom","type":"address"},{"indexed":false,"internalType":"bool","name":"executed","type":"bool"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint256","name":"result","type":"uint256"}],"name":"SolverTxResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"currentRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"SurchargeRecipientTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"SurchargeRecipientTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SurchargeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"earliestAvailable","type":"uint256"}],"name":"Unbond","type":"event"},{"inputs":[],"name":"ATLAS_SURCHARGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUNDLER_SURCHARGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ESCROW_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTION_ENV_TEMPLATE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIXED_GAS_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"L2_GAS_CALCULATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIMULATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERIFICATION","outputs":[{"internalType":"contract IAtlasVerification","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accessData","outputs":[{"internalType":"uint112","name":"bonded","type":"uint112"},{"internalType":"uint32","name":"lastAccessedBlock","type":"uint32"},{"internalType":"uint24","name":"auctionWins","type":"uint24"},{"internalType":"uint24","name":"auctionFails","type":"uint24"},{"internalType":"uint64","name":"totalGasValueUsed","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accountLastActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfBonded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfUnbonding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"becomeSurchargeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bondedTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"borrow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"contribute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"}],"name":"createExecutionEnvironment","outputs":[{"internalType":"address","name":"executionEnvironment","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cumulativeSurcharge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToBond","type":"uint256"}],"name":"depositAndBond","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint32","name":"solverGasLimit","type":"uint32"}],"internalType":"struct DAppConfig","name":"dConfig","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"}],"name":"execute","outputs":[{"components":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint24","name":"solverOutcome","type":"uint24"},{"internalType":"uint8","name":"solverIndex","type":"uint8"},{"internalType":"uint8","name":"solverCount","type":"uint8"},{"internalType":"uint8","name":"callDepth","type":"uint8"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"bool","name":"solverSuccessful","type":"bool"},{"internalType":"bool","name":"paymentsSuccessful","type":"bool"},{"internalType":"bool","name":"bidFind","type":"bool"},{"internalType":"bool","name":"isSimulation","type":"bool"},{"internalType":"address","name":"bundler","type":"address"}],"internalType":"struct Context","name":"ctx","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"getExecutionEnvironment","outputs":[{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[{"internalType":"address","name":"activeEnvironment","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"uint8","name":"phase","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"metacall","outputs":[{"internalType":"bool","name":"auctionWon","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSurchargeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxApprovedGasSpend","type":"uint256"}],"name":"reconcile","outputs":[{"internalType":"uint256","name":"owed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shortfall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint24","name":"solverOutcome","type":"uint24"},{"internalType":"uint8","name":"solverIndex","type":"uint8"},{"internalType":"uint8","name":"solverCount","type":"uint8"},{"internalType":"uint8","name":"callDepth","type":"uint8"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"bool","name":"solverSuccessful","type":"bool"},{"internalType":"bool","name":"paymentsSuccessful","type":"bool"},{"internalType":"bool","name":"bidFind","type":"bool"},{"internalType":"bool","name":"isSimulation","type":"bool"},{"internalType":"address","name":"bundler","type":"address"}],"internalType":"struct Context","name":"ctx","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation","name":"solverOp","type":"tuple"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"solverCall","outputs":[{"components":[{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"uint256","name":"floor","type":"uint256"},{"internalType":"uint256","name":"ceiling","type":"uint256"},{"internalType":"bool","name":"etherIsBidToken","type":"bool"},{"internalType":"bool","name":"invertsBidValue","type":"bool"}],"internalType":"struct SolverTracker","name":"solverTracker","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"solverLockData","outputs":[{"internalType":"address","name":"currentSolver","type":"address"},{"internalType":"bool","name":"calledBack","type":"bool"},{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"opHash","type":"bytes32"}],"name":"solverOpHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surchargeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"transferDAppERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRecipient","type":"address"}],"name":"transferSurchargeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"transferUserERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unbondingCompleteBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawSurcharge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint256","name":"escrowDuration","type":"uint256"},{"internalType":"address","name":"verification","type":"address"},{"internalType":"address","name":"simulator","type":"address"},{"internalType":"address","name":"initialSurchargeRecipient","type":"address"},{"internalType":"address","name":"l2GasCalculator","type":"address"},{"internalType":"address","name":"executionTemplate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllocateValueDelegatecallFail","type":"error"},{"inputs":[],"name":"AllocateValueFail","type":"error"},{"inputs":[],"name":"AllocateValueSimFail","type":"error"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"AlteredControl","type":"error"},{"inputs":[],"name":"AtlasLockActive","type":"error"},{"inputs":[],"name":"BalanceNotReconciled","type":"error"},{"inputs":[{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidFindSuccessful","type":"error"},{"inputs":[],"name":"BidNotPaid","type":"error"},{"inputs":[{"internalType":"uint256","name":"indexInSolverOps","type":"uint256"},{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidTooHigh","type":"error"},{"inputs":[],"name":"BothPreOpsAndUserReturnDataCannotBeTracked","type":"error"},{"inputs":[],"name":"BothUserAndDAppNoncesCannotBeSequential","type":"error"},{"inputs":[],"name":"CallbackNotCalled","type":"error"},{"inputs":[],"name":"DAppNotEnabled","type":"error"},{"inputs":[],"name":"DoubleReconcile","type":"error"},{"inputs":[],"name":"EnvironmentMismatch","type":"error"},{"inputs":[],"name":"EscrowLockActive","type":"error"},{"inputs":[],"name":"ExecutionEnvironmentBalanceTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientAtlETHBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientAvailableBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBalanceForDeduction","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBondedBalance","type":"error"},{"inputs":[],"name":"InsufficientEscrow","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientLocalFunds","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint256","name":"holds","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientSolverBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientSurchargeBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"shortfall","type":"uint256"}],"name":"InsufficientTotalBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientUnbondedBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientWithdrawableBalance","type":"error"},{"inputs":[],"name":"InvalidAccess","type":"error"},{"inputs":[],"name":"InvalidCaller","type":"error"},{"inputs":[],"name":"InvalidCodeHash","type":"error"},{"inputs":[],"name":"InvalidControl","type":"error"},{"inputs":[],"name":"InvalidDAppControl","type":"error"},{"inputs":[],"name":"InvalidEntry","type":"error"},{"inputs":[],"name":"InvalidEntryFunction","type":"error"},{"inputs":[],"name":"InvalidEnvironment","type":"error"},{"inputs":[],"name":"InvalidEscrowDuration","type":"error"},{"inputs":[{"internalType":"address","name":"correctEnvironment","type":"address"}],"name":"InvalidExecutionEnvironment","type":"error"},{"inputs":[],"name":"InvalidLockState","type":"error"},{"inputs":[],"name":"InvalidSignatory","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidSolver","type":"error"},{"inputs":[{"internalType":"address","name":"solverFrom","type":"address"}],"name":"InvalidSolverFrom","type":"error"},{"inputs":[],"name":"InvalidTo","type":"error"},{"inputs":[],"name":"InvalidUser","type":"error"},{"inputs":[],"name":"InvertBidValueCannotBeExPostBids","type":"error"},{"inputs":[],"name":"InvertedBidExceedsCeiling","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerBalancing","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerFinalized","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"MissingFunds","type":"error"},{"inputs":[],"name":"MustBeDelegatecalled","type":"error"},{"inputs":[],"name":"NoAuctionWinner","type":"error"},{"inputs":[],"name":"NoDelegatecall","type":"error"},{"inputs":[],"name":"NoUnfilledRequests","type":"error"},{"inputs":[],"name":"NoUnusedNonceInBitmap","type":"error"},{"inputs":[],"name":"NotEnvironmentOwner","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[],"name":"NotInitialized","type":"error"},{"inputs":[],"name":"OnlyAtlas","type":"error"},{"inputs":[],"name":"OnlyGovernance","type":"error"},{"inputs":[],"name":"PermitDeadlineExpired","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallReturnedFalse","type":"error"},{"inputs":[],"name":"PostOpsFail","type":"error"},{"inputs":[],"name":"PostOpsSimFail","type":"error"},{"inputs":[],"name":"PostSolverFailed","type":"error"},{"inputs":[],"name":"PreOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PreOpsFail","type":"error"},{"inputs":[],"name":"PreOpsSimFail","type":"error"},{"inputs":[],"name":"PreSolverFailed","type":"error"},{"inputs":[],"name":"SignatoryActive","type":"error"},{"inputs":[],"name":"SimulationPassed","type":"error"},{"inputs":[],"name":"SolverMustReconcile","type":"error"},{"inputs":[],"name":"SolverOpReverted","type":"error"},{"inputs":[{"internalType":"uint256","name":"solverOutcomeResult","type":"uint256"}],"name":"SolverSimFail","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnbalancedAccounting","type":"error"},{"inputs":[],"name":"UncoveredResult","type":"error"},{"inputs":[],"name":"UnexpectedNonRevert","type":"error"},{"inputs":[],"name":"Unreachable","type":"error"},{"inputs":[],"name":"UserNotFulfilled","type":"error"},{"inputs":[],"name":"UserOpFail","type":"error"},{"inputs":[],"name":"UserOpSimFail","type":"error"},{"inputs":[],"name":"UserOpValueExceedsBalance","type":"error"},{"inputs":[],"name":"UserSimulationFailed","type":"error"},{"inputs":[],"name":"UserSimulationSucceeded","type":"error"},{"inputs":[],"name":"UserUnexpectedSuccess","type":"error"},{"inputs":[],"name":"UserWrapperCallFail","type":"error"},{"inputs":[],"name":"UserWrapperDelegatecallFail","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"ValidCalls","type":"error"},{"inputs":[],"name":"ValueTooLarge","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"VerificationSimFail","type":"error"},{"inputs":[],"name":"WrongDepth","type":"error"},{"inputs":[],"name":"WrongPhase","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Bond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"oldGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppGovernanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"executionEnvironment","type":"address"}],"name":"ExecutionEnvironmentCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bundler","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"solverSuccessful","type":"bool"},{"indexed":false,"internalType":"bool","name":"disbursementSuccessful","type":"bool"},{"indexed":false,"internalType":"uint256","name":"ethPaidToBundler","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netGasSurcharge","type":"uint256"}],"name":"MetacallResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"NewDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"RemovedDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"solverTo","type":"address"},{"indexed":true,"internalType":"address","name":"solverFrom","type":"address"},{"indexed":false,"internalType":"bool","name":"executed","type":"bool"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint256","name":"result","type":"uint256"}],"name":"SolverTxResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"currentRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"SurchargeRecipientTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"SurchargeRecipientTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SurchargeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"earliestAvailable","type":"uint256"}],"name":"Unbond","type":"event"},{"inputs":[],"name":"ATLAS_SURCHARGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUNDLER_SURCHARGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ESCROW_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTION_ENV_TEMPLATE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIXED_GAS_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"L2_GAS_CALCULATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIMULATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERIFICATION","outputs":[{"internalType":"contract IAtlasVerification","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accessData","outputs":[{"internalType":"uint112","name":"bonded","type":"uint112"},{"internalType":"uint32","name":"lastAccessedBlock","type":"uint32"},{"internalType":"uint24","name":"auctionWins","type":"uint24"},{"internalType":"uint24","name":"auctionFails","type":"uint24"},{"internalType":"uint64","name":"totalGasUsed","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accountLastActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfBonded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfUnbonding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"becomeSurchargeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bondedTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"borrow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"contribute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"}],"name":"createExecutionEnvironment","outputs":[{"internalType":"address","name":"executionEnvironment","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cumulativeSurcharge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToBond","type":"uint256"}],"name":"depositAndBond","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint32","name":"solverGasLimit","type":"uint32"}],"internalType":"struct DAppConfig","name":"dConfig","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"}],"name":"execute","outputs":[{"components":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint24","name":"solverOutcome","type":"uint24"},{"internalType":"uint8","name":"solverIndex","type":"uint8"},{"internalType":"uint8","name":"solverCount","type":"uint8"},{"internalType":"uint8","name":"callDepth","type":"uint8"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"bool","name":"solverSuccessful","type":"bool"},{"internalType":"bool","name":"paymentsSuccessful","type":"bool"},{"internalType":"bool","name":"bidFind","type":"bool"},{"internalType":"bool","name":"isSimulation","type":"bool"},{"internalType":"address","name":"bundler","type":"address"}],"internalType":"struct Context","name":"ctx","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"getExecutionEnvironment","outputs":[{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[{"internalType":"address","name":"activeEnvironment","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"uint8","name":"phase","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"metacall","outputs":[{"internalType":"bool","name":"auctionWon","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSurchargeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxApprovedGasSpend","type":"uint256"}],"name":"reconcile","outputs":[{"internalType":"uint256","name":"owed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shortfall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint24","name":"solverOutcome","type":"uint24"},{"internalType":"uint8","name":"solverIndex","type":"uint8"},{"internalType":"uint8","name":"solverCount","type":"uint8"},{"internalType":"uint8","name":"callDepth","type":"uint8"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"bool","name":"solverSuccessful","type":"bool"},{"internalType":"bool","name":"paymentsSuccessful","type":"bool"},{"internalType":"bool","name":"bidFind","type":"bool"},{"internalType":"bool","name":"isSimulation","type":"bool"},{"internalType":"address","name":"bundler","type":"address"}],"internalType":"struct Context","name":"ctx","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation","name":"solverOp","type":"tuple"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"solverCall","outputs":[{"components":[{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"uint256","name":"floor","type":"uint256"},{"internalType":"uint256","name":"ceiling","type":"uint256"},{"internalType":"bool","name":"etherIsBidToken","type":"bool"},{"internalType":"bool","name":"invertsBidValue","type":"bool"}],"internalType":"struct SolverTracker","name":"solverTracker","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"solverLockData","outputs":[{"internalType":"address","name":"currentSolver","type":"address"},{"internalType":"bool","name":"calledBack","type":"bool"},{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"opHash","type":"bytes32"}],"name":"solverOpHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surchargeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"transferDAppERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRecipient","type":"address"}],"name":"transferSurchargeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"transferUserERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unbondingCompleteBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawSurcharge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/contract/atlas/atlas.go b/contract/atlas/1.0.0/atlas.go similarity index 91% rename from contract/atlas/atlas.go rename to contract/atlas/1.0.0/atlas.go index ced57c0..8d8fb07 100644 --- a/contract/atlas/atlas.go +++ b/contract/atlas/1.0.0/atlas.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlas +package atlas_1_0_0 import ( "errors" @@ -110,7 +110,7 @@ type UserOperation struct { // AtlasMetaData contains all meta data concerning the Atlas contract. var AtlasMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"escrowDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verification\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"simulator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialSurchargeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2GasCalculator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"executionTemplate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AllocateValueDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlteredControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AtlasLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotReconciled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidFindSuccessful\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BidNotPaid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"indexInSolverOps\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallbackNotCalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DAppNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoubleReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnvironmentMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EscrowLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientAtlETHBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientAvailableBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalanceForDeduction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBondedBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEscrow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLocalFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"holds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientSolverBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientSurchargeBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shortfall\",\"type\":\"uint256\"}],\"name\":\"InsufficientTotalBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientUnbondedBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientWithdrawableBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCodeHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDAppControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntryFunction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEscrowDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correctEnvironment\",\"type\":\"address\"}],\"name\":\"InvalidExecutionEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLockState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSolver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"}],\"name\":\"InvalidSolverFrom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTo\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidUser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertBidValueCannotBeExPostBids\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertedBidExceedsCeiling\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerBalancing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"MissingFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeDelegatecalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAuctionWinner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDelegatecall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnfilledRequests\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnusedNonceInBitmap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnvironmentOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAtlas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyGovernance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PermitDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallReturnedFalse\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SimulationPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverMustReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverOpReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"solverOutcomeResult\",\"type\":\"uint256\"}],\"name\":\"SolverSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnbalancedAccounting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UncoveredResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedNonRevert\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unreachable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserNotFulfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpValueExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationSucceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserUnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperCallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"ValidCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"VerificationSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongDepth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongPhase\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Bond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppGovernanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"}],\"name\":\"ExecutionEnvironmentCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"disbursementSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethPaidToBundler\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netGasSurcharge\",\"type\":\"uint256\"}],\"name\":\"MetacallResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"NewDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"RemovedDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solverTo\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"name\":\"SolverTxResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currentRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"SurchargeRecipientTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"SurchargeRecipientTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SurchargeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"earliestAvailable\",\"type\":\"uint256\"}],\"name\":\"Unbond\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ATLAS_SURCHARGE_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BUNDLER_SURCHARGE_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ESCROW_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTION_ENV_TEMPLATE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FIXED_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_GAS_CALCULATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIMULATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERIFICATION\",\"outputs\":[{\"internalType\":\"contractIAtlasVerification\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accessData\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"bonded\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastAccessedBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"auctionWins\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"auctionFails\",\"type\":\"uint24\"},{\"internalType\":\"uint64\",\"name\":\"totalGasValueUsed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accountLastActiveBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfBonded\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnbonding\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"becomeSurchargeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"bond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondedTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contribute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"createExecutionEnvironment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cumulativeSurcharge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToBond\",\"type\":\"uint256\"}],\"name\":\"depositAndBond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"solverGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structDAppConfig\",\"name\":\"dConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"solverOutcome\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"solverIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"solverCount\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callDepth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"paymentsSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bidFind\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"}],\"internalType\":\"structContext\",\"name\":\"ctx\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"getExecutionEnvironment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"activeEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"metacall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"auctionWon\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingSurchargeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxApprovedGasSpend\",\"type\":\"uint256\"}],\"name\":\"reconcile\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"owed\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shortfall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"solverOutcome\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"solverIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"solverCount\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callDepth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"paymentsSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bidFind\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"}],\"internalType\":\"structContext\",\"name\":\"ctx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation\",\"name\":\"solverOp\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"solverCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ceiling\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"etherIsBidToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"invertsBidValue\",\"type\":\"bool\"}],\"internalType\":\"structSolverTracker\",\"name\":\"solverTracker\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"solverLockData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"currentSolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"calledBack\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"name\":\"solverOpHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"surchargeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"transferDAppERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"transferSurchargeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"transferUserERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"unbondingCompleteBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawSurcharge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"escrowDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verification\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"simulator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialSurchargeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2GasCalculator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"executionTemplate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AllocateValueDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlteredControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AtlasLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotReconciled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidFindSuccessful\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BidNotPaid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"indexInSolverOps\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallbackNotCalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DAppNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoubleReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnvironmentMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EscrowLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientAtlETHBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientAvailableBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalanceForDeduction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBondedBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEscrow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLocalFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"holds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientSolverBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientSurchargeBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shortfall\",\"type\":\"uint256\"}],\"name\":\"InsufficientTotalBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientUnbondedBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientWithdrawableBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCodeHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDAppControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntryFunction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEscrowDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correctEnvironment\",\"type\":\"address\"}],\"name\":\"InvalidExecutionEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLockState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSolver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"}],\"name\":\"InvalidSolverFrom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTo\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidUser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertBidValueCannotBeExPostBids\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertedBidExceedsCeiling\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerBalancing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"MissingFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeDelegatecalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAuctionWinner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDelegatecall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnfilledRequests\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnusedNonceInBitmap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnvironmentOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAtlas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyGovernance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PermitDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallReturnedFalse\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SimulationPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverMustReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverOpReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"solverOutcomeResult\",\"type\":\"uint256\"}],\"name\":\"SolverSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnbalancedAccounting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UncoveredResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedNonRevert\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unreachable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserNotFulfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpValueExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationSucceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserUnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperCallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"ValidCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"VerificationSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongDepth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongPhase\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Bond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppGovernanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"}],\"name\":\"ExecutionEnvironmentCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"disbursementSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethPaidToBundler\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netGasSurcharge\",\"type\":\"uint256\"}],\"name\":\"MetacallResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"NewDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"RemovedDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solverTo\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"name\":\"SolverTxResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currentRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"SurchargeRecipientTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"SurchargeRecipientTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SurchargeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"earliestAvailable\",\"type\":\"uint256\"}],\"name\":\"Unbond\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ATLAS_SURCHARGE_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BUNDLER_SURCHARGE_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ESCROW_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTION_ENV_TEMPLATE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FIXED_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_GAS_CALCULATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIMULATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERIFICATION\",\"outputs\":[{\"internalType\":\"contractIAtlasVerification\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accessData\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"bonded\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastAccessedBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"auctionWins\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"auctionFails\",\"type\":\"uint24\"},{\"internalType\":\"uint64\",\"name\":\"totalGasUsed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accountLastActiveBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfBonded\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnbonding\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"becomeSurchargeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"bond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondedTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contribute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"createExecutionEnvironment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cumulativeSurcharge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToBond\",\"type\":\"uint256\"}],\"name\":\"depositAndBond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"solverGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structDAppConfig\",\"name\":\"dConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"solverOutcome\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"solverIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"solverCount\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callDepth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"paymentsSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bidFind\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"}],\"internalType\":\"structContext\",\"name\":\"ctx\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"getExecutionEnvironment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"activeEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"metacall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"auctionWon\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingSurchargeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxApprovedGasSpend\",\"type\":\"uint256\"}],\"name\":\"reconcile\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"owed\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shortfall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"solverOutcome\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"solverIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"solverCount\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callDepth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"paymentsSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bidFind\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"}],\"internalType\":\"structContext\",\"name\":\"ctx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation\",\"name\":\"solverOp\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"solverCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ceiling\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"etherIsBidToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"invertsBidValue\",\"type\":\"bool\"}],\"internalType\":\"structSolverTracker\",\"name\":\"solverTracker\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"solverLockData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"currentSolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"calledBack\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"name\":\"solverOpHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"surchargeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"transferDAppERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"transferSurchargeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"transferUserERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"unbondingCompleteBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawSurcharge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // AtlasABI is the input ABI used to generate the binding from. @@ -540,13 +540,13 @@ func (_Atlas *AtlasCallerSession) VERIFICATION() (common.Address, error) { // AccessData is a free data retrieval call binding the contract method 0x5e8edccc. // -// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasUsed) func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Address) (struct { Bonded *big.Int LastAccessedBlock uint32 AuctionWins *big.Int AuctionFails *big.Int - TotalGasValueUsed uint64 + TotalGasUsed uint64 }, error) { var out []interface{} err := _Atlas.contract.Call(opts, &out, "accessData", account) @@ -556,7 +556,7 @@ func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Addres LastAccessedBlock uint32 AuctionWins *big.Int AuctionFails *big.Int - TotalGasValueUsed uint64 + TotalGasUsed uint64 }) if err != nil { return *outstruct, err @@ -566,7 +566,7 @@ func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Addres outstruct.LastAccessedBlock = *abi.ConvertType(out[1], new(uint32)).(*uint32) outstruct.AuctionWins = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.AuctionFails = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) - outstruct.TotalGasValueUsed = *abi.ConvertType(out[4], new(uint64)).(*uint64) + outstruct.TotalGasUsed = *abi.ConvertType(out[4], new(uint64)).(*uint64) return *outstruct, err @@ -574,26 +574,26 @@ func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Addres // AccessData is a free data retrieval call binding the contract method 0x5e8edccc. // -// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasUsed) func (_Atlas *AtlasSession) AccessData(account common.Address) (struct { Bonded *big.Int LastAccessedBlock uint32 AuctionWins *big.Int AuctionFails *big.Int - TotalGasValueUsed uint64 + TotalGasUsed uint64 }, error) { return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) } // AccessData is a free data retrieval call binding the contract method 0x5e8edccc. // -// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasUsed) func (_Atlas *AtlasCallerSession) AccessData(account common.Address) (struct { Bonded *big.Int LastAccessedBlock uint32 AuctionWins *big.Int AuctionFails *big.Int - TotalGasValueUsed uint64 + TotalGasUsed uint64 }, error) { return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) } diff --git a/contract/atlas/1.0.1/abi.json b/contract/atlas/1.0.1/abi.json new file mode 100644 index 0000000..113b6da --- /dev/null +++ b/contract/atlas/1.0.1/abi.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"uint256","name":"escrowDuration","type":"uint256"},{"internalType":"uint256","name":"atlasSurchargeRate","type":"uint256"},{"internalType":"uint256","name":"bundlerSurchargeRate","type":"uint256"},{"internalType":"address","name":"verification","type":"address"},{"internalType":"address","name":"simulator","type":"address"},{"internalType":"address","name":"initialSurchargeRecipient","type":"address"},{"internalType":"address","name":"l2GasCalculator","type":"address"},{"internalType":"address","name":"factoryLib","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllocateValueDelegatecallFail","type":"error"},{"inputs":[],"name":"AllocateValueFail","type":"error"},{"inputs":[],"name":"AllocateValueSimFail","type":"error"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"AlteredControl","type":"error"},{"inputs":[],"name":"AtlasLockActive","type":"error"},{"inputs":[],"name":"BalanceNotReconciled","type":"error"},{"inputs":[{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidFindSuccessful","type":"error"},{"inputs":[],"name":"BidNotPaid","type":"error"},{"inputs":[{"internalType":"uint256","name":"indexInSolverOps","type":"uint256"},{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidTooHigh","type":"error"},{"inputs":[],"name":"BothPreOpsAndUserReturnDataCannotBeTracked","type":"error"},{"inputs":[],"name":"BothUserAndDAppNoncesCannotBeSequential","type":"error"},{"inputs":[],"name":"CallbackNotCalled","type":"error"},{"inputs":[],"name":"DAppNotEnabled","type":"error"},{"inputs":[],"name":"DoubleReconcile","type":"error"},{"inputs":[],"name":"EnvironmentMismatch","type":"error"},{"inputs":[],"name":"EscrowLockActive","type":"error"},{"inputs":[],"name":"ExecutionEnvironmentBalanceTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientAtlETHBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientAvailableBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBalanceForDeduction","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBondedBalance","type":"error"},{"inputs":[],"name":"InsufficientEscrow","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientLocalFunds","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint256","name":"holds","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientSolverBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientSurchargeBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"shortfall","type":"uint256"}],"name":"InsufficientTotalBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientUnbondedBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientWithdrawableBalance","type":"error"},{"inputs":[],"name":"InvalidAccess","type":"error"},{"inputs":[],"name":"InvalidCaller","type":"error"},{"inputs":[],"name":"InvalidCodeHash","type":"error"},{"inputs":[],"name":"InvalidControl","type":"error"},{"inputs":[],"name":"InvalidDAppControl","type":"error"},{"inputs":[],"name":"InvalidEntry","type":"error"},{"inputs":[],"name":"InvalidEntryFunction","type":"error"},{"inputs":[],"name":"InvalidEnvironment","type":"error"},{"inputs":[],"name":"InvalidEscrowDuration","type":"error"},{"inputs":[{"internalType":"address","name":"correctEnvironment","type":"address"}],"name":"InvalidExecutionEnvironment","type":"error"},{"inputs":[],"name":"InvalidLockState","type":"error"},{"inputs":[],"name":"InvalidSignatory","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidSolver","type":"error"},{"inputs":[{"internalType":"address","name":"solverFrom","type":"address"}],"name":"InvalidSolverFrom","type":"error"},{"inputs":[],"name":"InvalidTo","type":"error"},{"inputs":[],"name":"InvalidUser","type":"error"},{"inputs":[],"name":"InvertBidValueCannotBeExPostBids","type":"error"},{"inputs":[],"name":"InvertedBidExceedsCeiling","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerBalancing","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerFinalized","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"MissingFunds","type":"error"},{"inputs":[],"name":"MustBeDelegatecalled","type":"error"},{"inputs":[],"name":"NoAuctionWinner","type":"error"},{"inputs":[],"name":"NoDelegatecall","type":"error"},{"inputs":[],"name":"NoUnfilledRequests","type":"error"},{"inputs":[],"name":"NoUnusedNonceInBitmap","type":"error"},{"inputs":[],"name":"NotEnvironmentOwner","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[],"name":"NotInitialized","type":"error"},{"inputs":[],"name":"OnlyAtlas","type":"error"},{"inputs":[],"name":"OnlyGovernance","type":"error"},{"inputs":[],"name":"PermitDeadlineExpired","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallReturnedFalse","type":"error"},{"inputs":[],"name":"PostOpsFail","type":"error"},{"inputs":[],"name":"PostOpsSimFail","type":"error"},{"inputs":[],"name":"PostSolverFailed","type":"error"},{"inputs":[],"name":"PreOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PreOpsFail","type":"error"},{"inputs":[],"name":"PreOpsSimFail","type":"error"},{"inputs":[],"name":"PreSolverFailed","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[],"name":"SignatoryActive","type":"error"},{"inputs":[],"name":"SimulationPassed","type":"error"},{"inputs":[],"name":"SimulatorBalanceTooLow","type":"error"},{"inputs":[],"name":"SolverMustReconcile","type":"error"},{"inputs":[],"name":"SolverOpReverted","type":"error"},{"inputs":[{"internalType":"uint256","name":"solverOutcomeResult","type":"uint256"}],"name":"SolverSimFail","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnbalancedAccounting","type":"error"},{"inputs":[],"name":"UncoveredResult","type":"error"},{"inputs":[],"name":"UnexpectedNonRevert","type":"error"},{"inputs":[],"name":"Unreachable","type":"error"},{"inputs":[],"name":"UserNotFulfilled","type":"error"},{"inputs":[],"name":"UserOpFail","type":"error"},{"inputs":[],"name":"UserOpSimFail","type":"error"},{"inputs":[],"name":"UserOpValueExceedsBalance","type":"error"},{"inputs":[],"name":"UserSimulationFailed","type":"error"},{"inputs":[],"name":"UserSimulationSucceeded","type":"error"},{"inputs":[],"name":"UserUnexpectedSuccess","type":"error"},{"inputs":[],"name":"UserWrapperCallFail","type":"error"},{"inputs":[],"name":"UserWrapperDelegatecallFail","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"ValidCalls","type":"error"},{"inputs":[],"name":"ValueTooLarge","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"VerificationSimFail","type":"error"},{"inputs":[],"name":"WrongDepth","type":"error"},{"inputs":[],"name":"WrongPhase","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Bond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"oldGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppGovernanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"executionEnvironment","type":"address"}],"name":"ExecutionEnvironmentCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bundler","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"solverSuccessful","type":"bool"},{"indexed":false,"internalType":"bool","name":"disbursementSuccessful","type":"bool"},{"indexed":false,"internalType":"uint256","name":"ethPaidToBundler","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netGasSurcharge","type":"uint256"}],"name":"MetacallResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"NewDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"RemovedDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"solverTo","type":"address"},{"indexed":true,"internalType":"address","name":"solverFrom","type":"address"},{"indexed":true,"internalType":"address","name":"dAppControl","type":"address"},{"indexed":false,"internalType":"address","name":"bidToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"bidAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"executed","type":"bool"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint256","name":"result","type":"uint256"}],"name":"SolverTxResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"currentRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"SurchargeRecipientTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"SurchargeRecipientTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SurchargeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"earliestAvailable","type":"uint256"}],"name":"Unbond","type":"event"},{"inputs":[],"name":"ATLAS_SURCHARGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUNDLER_SURCHARGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ESCROW_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FACTORY_LIB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIXED_GAS_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"L2_GAS_CALCULATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIMULATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERIFICATION","outputs":[{"internalType":"contract IAtlasVerification","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accessData","outputs":[{"internalType":"uint112","name":"bonded","type":"uint112"},{"internalType":"uint32","name":"lastAccessedBlock","type":"uint32"},{"internalType":"uint24","name":"auctionWins","type":"uint24"},{"internalType":"uint24","name":"auctionFails","type":"uint24"},{"internalType":"uint64","name":"totalGasValueUsed","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accountLastActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfBonded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfUnbonding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"becomeSurchargeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bondedTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"borrow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"contribute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"createExecutionEnvironment","outputs":[{"internalType":"address","name":"executionEnvironment","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cumulativeSurcharge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToBond","type":"uint256"}],"name":"depositAndBond","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint32","name":"solverGasLimit","type":"uint32"}],"internalType":"struct DAppConfig","name":"dConfig","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bool","name":"isSimulation","type":"bool"}],"name":"execute","outputs":[{"components":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint24","name":"solverOutcome","type":"uint24"},{"internalType":"uint8","name":"solverIndex","type":"uint8"},{"internalType":"uint8","name":"solverCount","type":"uint8"},{"internalType":"uint8","name":"callDepth","type":"uint8"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"bool","name":"solverSuccessful","type":"bool"},{"internalType":"bool","name":"paymentsSuccessful","type":"bool"},{"internalType":"bool","name":"bidFind","type":"bool"},{"internalType":"bool","name":"isSimulation","type":"bool"},{"internalType":"address","name":"bundler","type":"address"}],"internalType":"struct Context","name":"ctx","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"getExecutionEnvironment","outputs":[{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[{"internalType":"address","name":"activeEnvironment","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"uint8","name":"phase","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"metacall","outputs":[{"internalType":"bool","name":"auctionWon","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSurchargeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxApprovedGasSpend","type":"uint256"}],"name":"reconcile","outputs":[{"internalType":"uint256","name":"owed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shortfall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"executionEnvironment","type":"address"},{"internalType":"uint24","name":"solverOutcome","type":"uint24"},{"internalType":"uint8","name":"solverIndex","type":"uint8"},{"internalType":"uint8","name":"solverCount","type":"uint8"},{"internalType":"uint8","name":"callDepth","type":"uint8"},{"internalType":"uint8","name":"phase","type":"uint8"},{"internalType":"bool","name":"solverSuccessful","type":"bool"},{"internalType":"bool","name":"paymentsSuccessful","type":"bool"},{"internalType":"bool","name":"bidFind","type":"bool"},{"internalType":"bool","name":"isSimulation","type":"bool"},{"internalType":"address","name":"bundler","type":"address"}],"internalType":"struct Context","name":"ctx","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation","name":"solverOp","type":"tuple"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"solverCall","outputs":[{"components":[{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"uint256","name":"floor","type":"uint256"},{"internalType":"uint256","name":"ceiling","type":"uint256"},{"internalType":"bool","name":"etherIsBidToken","type":"bool"},{"internalType":"bool","name":"invertsBidValue","type":"bool"}],"internalType":"struct SolverTracker","name":"solverTracker","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"solverLockData","outputs":[{"internalType":"address","name":"currentSolver","type":"address"},{"internalType":"bool","name":"calledBack","type":"bool"},{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"opHash","type":"bytes32"}],"name":"solverOpHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surchargeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"transferDAppERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRecipient","type":"address"}],"name":"transferSurchargeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"control","type":"address"}],"name":"transferUserERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unbondingCompleteBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawSurcharge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/contract/atlas/1.0.1/atlas.go b/contract/atlas/1.0.1/atlas.go new file mode 100644 index 0000000..7a9f8ec --- /dev/null +++ b/contract/atlas/1.0.1/atlas.go @@ -0,0 +1,4189 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package atlas_1_0_1 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// Context is an auto generated low-level Go binding around an user-defined struct. +type Context struct { + UserOpHash [32]byte + ExecutionEnvironment common.Address + SolverOutcome *big.Int + SolverIndex uint8 + SolverCount uint8 + CallDepth uint8 + Phase uint8 + SolverSuccessful bool + PaymentsSuccessful bool + BidFind bool + IsSimulation bool + Bundler common.Address +} + +// DAppConfig is an auto generated low-level Go binding around an user-defined struct. +type DAppConfig struct { + To common.Address + CallConfig uint32 + BidToken common.Address + SolverGasLimit uint32 +} + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// SolverTracker is an auto generated low-level Go binding around an user-defined struct. +type SolverTracker struct { + BidAmount *big.Int + Floor *big.Int + Ceiling *big.Int + EtherIsBidToken bool + InvertsBidValue bool +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// AtlasMetaData contains all meta data concerning the Atlas contract. +var AtlasMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"escrowDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"atlasSurchargeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bundlerSurchargeRate\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verification\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"simulator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialSurchargeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2GasCalculator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factoryLib\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AllocateValueDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlteredControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AtlasLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotReconciled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidFindSuccessful\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BidNotPaid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"indexInSolverOps\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallbackNotCalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DAppNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoubleReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnvironmentMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EscrowLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientAtlETHBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientAvailableBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalanceForDeduction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBondedBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEscrow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLocalFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"holds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientSolverBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientSurchargeBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shortfall\",\"type\":\"uint256\"}],\"name\":\"InsufficientTotalBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientUnbondedBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientWithdrawableBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCodeHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDAppControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntryFunction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEscrowDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correctEnvironment\",\"type\":\"address\"}],\"name\":\"InvalidExecutionEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLockState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSolver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"}],\"name\":\"InvalidSolverFrom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTo\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidUser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertBidValueCannotBeExPostBids\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertedBidExceedsCeiling\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerBalancing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"MissingFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeDelegatecalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAuctionWinner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDelegatecall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnfilledRequests\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnusedNonceInBitmap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnvironmentOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAtlas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyGovernance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PermitDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallReturnedFalse\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreSolverFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SimulationPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SimulatorBalanceTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverMustReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverOpReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"solverOutcomeResult\",\"type\":\"uint256\"}],\"name\":\"SolverSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnbalancedAccounting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UncoveredResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedNonRevert\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unreachable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserNotFulfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpValueExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationSucceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserUnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperCallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"ValidCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"VerificationSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongDepth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongPhase\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Bond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppGovernanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"}],\"name\":\"ExecutionEnvironmentCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"disbursementSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethPaidToBundler\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netGasSurcharge\",\"type\":\"uint256\"}],\"name\":\"MetacallResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"NewDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"RemovedDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solverTo\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dAppControl\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"name\":\"SolverTxResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currentRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"SurchargeRecipientTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"SurchargeRecipientTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SurchargeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"earliestAvailable\",\"type\":\"uint256\"}],\"name\":\"Unbond\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ATLAS_SURCHARGE_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BUNDLER_SURCHARGE_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ESCROW_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY_LIB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FIXED_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_GAS_CALCULATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIMULATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERIFICATION\",\"outputs\":[{\"internalType\":\"contractIAtlasVerification\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accessData\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"bonded\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastAccessedBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"auctionWins\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"auctionFails\",\"type\":\"uint24\"},{\"internalType\":\"uint64\",\"name\":\"totalGasValueUsed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accountLastActiveBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfBonded\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnbonding\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"becomeSurchargeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"bond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondedTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contribute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"createExecutionEnvironment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cumulativeSurcharge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToBond\",\"type\":\"uint256\"}],\"name\":\"depositAndBond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"solverGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structDAppConfig\",\"name\":\"dConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"}],\"name\":\"execute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"solverOutcome\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"solverIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"solverCount\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callDepth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"paymentsSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bidFind\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"}],\"internalType\":\"structContext\",\"name\":\"ctx\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"getExecutionEnvironment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"activeEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"metacall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"auctionWon\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingSurchargeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxApprovedGasSpend\",\"type\":\"uint256\"}],\"name\":\"reconcile\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"owed\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shortfall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"executionEnvironment\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"solverOutcome\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"solverIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"solverCount\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callDepth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"phase\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"solverSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"paymentsSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bidFind\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"}],\"internalType\":\"structContext\",\"name\":\"ctx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation\",\"name\":\"solverOp\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"solverCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"floor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ceiling\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"etherIsBidToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"invertsBidValue\",\"type\":\"bool\"}],\"internalType\":\"structSolverTracker\",\"name\":\"solverTracker\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"solverLockData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"currentSolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"calledBack\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"name\":\"solverOpHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"surchargeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"transferDAppERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"transferSurchargeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"transferUserERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"unbondingCompleteBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawSurcharge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", +} + +// AtlasABI is the input ABI used to generate the binding from. +// Deprecated: Use AtlasMetaData.ABI instead. +var AtlasABI = AtlasMetaData.ABI + +// Atlas is an auto generated Go binding around an Ethereum contract. +type Atlas struct { + AtlasCaller // Read-only binding to the contract + AtlasTransactor // Write-only binding to the contract + AtlasFilterer // Log filterer for contract events +} + +// AtlasCaller is an auto generated read-only Go binding around an Ethereum contract. +type AtlasCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AtlasTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AtlasFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AtlasSession struct { + Contract *Atlas // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AtlasCallerSession struct { + Contract *AtlasCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AtlasTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AtlasTransactorSession struct { + Contract *AtlasTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasRaw is an auto generated low-level Go binding around an Ethereum contract. +type AtlasRaw struct { + Contract *Atlas // Generic contract binding to access the raw methods on +} + +// AtlasCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AtlasCallerRaw struct { + Contract *AtlasCaller // Generic read-only contract binding to access the raw methods on +} + +// AtlasTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AtlasTransactorRaw struct { + Contract *AtlasTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAtlas creates a new instance of Atlas, bound to a specific deployed contract. +func NewAtlas(address common.Address, backend bind.ContractBackend) (*Atlas, error) { + contract, err := bindAtlas(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Atlas{AtlasCaller: AtlasCaller{contract: contract}, AtlasTransactor: AtlasTransactor{contract: contract}, AtlasFilterer: AtlasFilterer{contract: contract}}, nil +} + +// NewAtlasCaller creates a new read-only instance of Atlas, bound to a specific deployed contract. +func NewAtlasCaller(address common.Address, caller bind.ContractCaller) (*AtlasCaller, error) { + contract, err := bindAtlas(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AtlasCaller{contract: contract}, nil +} + +// NewAtlasTransactor creates a new write-only instance of Atlas, bound to a specific deployed contract. +func NewAtlasTransactor(address common.Address, transactor bind.ContractTransactor) (*AtlasTransactor, error) { + contract, err := bindAtlas(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AtlasTransactor{contract: contract}, nil +} + +// NewAtlasFilterer creates a new log filterer instance of Atlas, bound to a specific deployed contract. +func NewAtlasFilterer(address common.Address, filterer bind.ContractFilterer) (*AtlasFilterer, error) { + contract, err := bindAtlas(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AtlasFilterer{contract: contract}, nil +} + +// bindAtlas binds a generic wrapper to an already deployed contract. +func bindAtlas(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AtlasABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Atlas *AtlasRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Atlas.Contract.AtlasCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Atlas *AtlasRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.Contract.AtlasTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Atlas *AtlasRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Atlas.Contract.AtlasTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Atlas *AtlasCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Atlas.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Atlas *AtlasTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Atlas *AtlasTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Atlas.Contract.contract.Transact(opts, method, params...) +} + +// ATLASSURCHARGERATE is a free data retrieval call binding the contract method 0x3173d012. +// +// Solidity: function ATLAS_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCaller) ATLASSURCHARGERATE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "ATLAS_SURCHARGE_RATE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ATLASSURCHARGERATE is a free data retrieval call binding the contract method 0x3173d012. +// +// Solidity: function ATLAS_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasSession) ATLASSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.ATLASSURCHARGERATE(&_Atlas.CallOpts) +} + +// ATLASSURCHARGERATE is a free data retrieval call binding the contract method 0x3173d012. +// +// Solidity: function ATLAS_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCallerSession) ATLASSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.ATLASSURCHARGERATE(&_Atlas.CallOpts) +} + +// BUNDLERSURCHARGERATE is a free data retrieval call binding the contract method 0x1df634ad. +// +// Solidity: function BUNDLER_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCaller) BUNDLERSURCHARGERATE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "BUNDLER_SURCHARGE_RATE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BUNDLERSURCHARGERATE is a free data retrieval call binding the contract method 0x1df634ad. +// +// Solidity: function BUNDLER_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasSession) BUNDLERSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.BUNDLERSURCHARGERATE(&_Atlas.CallOpts) +} + +// BUNDLERSURCHARGERATE is a free data retrieval call binding the contract method 0x1df634ad. +// +// Solidity: function BUNDLER_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCallerSession) BUNDLERSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.BUNDLERSURCHARGERATE(&_Atlas.CallOpts) +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasCaller) ESCROWDURATION(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "ESCROW_DURATION") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasSession) ESCROWDURATION() (*big.Int, error) { + return _Atlas.Contract.ESCROWDURATION(&_Atlas.CallOpts) +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasCallerSession) ESCROWDURATION() (*big.Int, error) { + return _Atlas.Contract.ESCROWDURATION(&_Atlas.CallOpts) +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasCaller) FACTORYLIB(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "FACTORY_LIB") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasSession) FACTORYLIB() (common.Address, error) { + return _Atlas.Contract.FACTORYLIB(&_Atlas.CallOpts) +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasCallerSession) FACTORYLIB() (common.Address, error) { + return _Atlas.Contract.FACTORYLIB(&_Atlas.CallOpts) +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasCaller) FIXEDGASOFFSET(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "FIXED_GAS_OFFSET") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasSession) FIXEDGASOFFSET() (*big.Int, error) { + return _Atlas.Contract.FIXEDGASOFFSET(&_Atlas.CallOpts) +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasCallerSession) FIXEDGASOFFSET() (*big.Int, error) { + return _Atlas.Contract.FIXEDGASOFFSET(&_Atlas.CallOpts) +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasCaller) L2GASCALCULATOR(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "L2_GAS_CALCULATOR") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasSession) L2GASCALCULATOR() (common.Address, error) { + return _Atlas.Contract.L2GASCALCULATOR(&_Atlas.CallOpts) +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasCallerSession) L2GASCALCULATOR() (common.Address, error) { + return _Atlas.Contract.L2GASCALCULATOR(&_Atlas.CallOpts) +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasCaller) SCALE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "SCALE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasSession) SCALE() (*big.Int, error) { + return _Atlas.Contract.SCALE(&_Atlas.CallOpts) +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasCallerSession) SCALE() (*big.Int, error) { + return _Atlas.Contract.SCALE(&_Atlas.CallOpts) +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasCaller) SIMULATOR(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "SIMULATOR") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasSession) SIMULATOR() (common.Address, error) { + return _Atlas.Contract.SIMULATOR(&_Atlas.CallOpts) +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasCallerSession) SIMULATOR() (common.Address, error) { + return _Atlas.Contract.SIMULATOR(&_Atlas.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasCaller) VERIFICATION(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "VERIFICATION") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasSession) VERIFICATION() (common.Address, error) { + return _Atlas.Contract.VERIFICATION(&_Atlas.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasCallerSession) VERIFICATION() (common.Address, error) { + return _Atlas.Contract.VERIFICATION(&_Atlas.CallOpts) +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "accessData", account) + + outstruct := new(struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Bonded = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LastAccessedBlock = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.AuctionWins = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.AuctionFails = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TotalGasValueUsed = *abi.ConvertType(out[4], new(uint64)).(*uint64) + + return *outstruct, err + +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasSession) AccessData(account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasCallerSession) AccessData(account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasCaller) AccountLastActiveBlock(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "accountLastActiveBlock", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasSession) AccountLastActiveBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.AccountLastActiveBlock(&_Atlas.CallOpts, account) +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) AccountLastActiveBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.AccountLastActiveBlock(&_Atlas.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOf(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOf(&_Atlas.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOf(&_Atlas.CallOpts, account) +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOfBonded(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOfBonded", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOfBonded(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfBonded(&_Atlas.CallOpts, account) +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOfBonded(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfBonded(&_Atlas.CallOpts, account) +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOfUnbonding(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOfUnbonding", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOfUnbonding(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfUnbonding(&_Atlas.CallOpts, account) +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOfUnbonding(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfUnbonding(&_Atlas.CallOpts, account) +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasCaller) BondedTotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "bondedTotalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasSession) BondedTotalSupply() (*big.Int, error) { + return _Atlas.Contract.BondedTotalSupply(&_Atlas.CallOpts) +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasCallerSession) BondedTotalSupply() (*big.Int, error) { + return _Atlas.Contract.BondedTotalSupply(&_Atlas.CallOpts) +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasCaller) CumulativeSurcharge(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "cumulativeSurcharge") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasSession) CumulativeSurcharge() (*big.Int, error) { + return _Atlas.Contract.CumulativeSurcharge(&_Atlas.CallOpts) +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasCallerSession) CumulativeSurcharge() (*big.Int, error) { + return _Atlas.Contract.CumulativeSurcharge(&_Atlas.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasSession) Decimals() (uint8, error) { + return _Atlas.Contract.Decimals(&_Atlas.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasCallerSession) Decimals() (uint8, error) { + return _Atlas.Contract.Decimals(&_Atlas.CallOpts) +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasCaller) IsUnlocked(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "isUnlocked") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasSession) IsUnlocked() (bool, error) { + return _Atlas.Contract.IsUnlocked(&_Atlas.CallOpts) +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasCallerSession) IsUnlocked() (bool, error) { + return _Atlas.Contract.IsUnlocked(&_Atlas.CallOpts) +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasCaller) Lock(opts *bind.CallOpts) (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "lock") + + outstruct := new(struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 + }) + if err != nil { + return *outstruct, err + } + + outstruct.ActiveEnvironment = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.CallConfig = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.Phase = *abi.ConvertType(out[2], new(uint8)).(*uint8) + + return *outstruct, err + +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasSession) Lock() (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + return _Atlas.Contract.Lock(&_Atlas.CallOpts) +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasCallerSession) Lock() (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + return _Atlas.Contract.Lock(&_Atlas.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasSession) Name() (string, error) { + return _Atlas.Contract.Name(&_Atlas.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasCallerSession) Name() (string, error) { + return _Atlas.Contract.Name(&_Atlas.CallOpts) +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasCaller) PendingSurchargeRecipient(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "pendingSurchargeRecipient") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasSession) PendingSurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.PendingSurchargeRecipient(&_Atlas.CallOpts) +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasCallerSession) PendingSurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.PendingSurchargeRecipient(&_Atlas.CallOpts) +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasCaller) Shortfall(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "shortfall") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasSession) Shortfall() (*big.Int, error) { + return _Atlas.Contract.Shortfall(&_Atlas.CallOpts) +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasCallerSession) Shortfall() (*big.Int, error) { + return _Atlas.Contract.Shortfall(&_Atlas.CallOpts) +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasCaller) SolverLockData(opts *bind.CallOpts) (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "solverLockData") + + outstruct := new(struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.CurrentSolver = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.CalledBack = *abi.ConvertType(out[1], new(bool)).(*bool) + outstruct.Fulfilled = *abi.ConvertType(out[2], new(bool)).(*bool) + + return *outstruct, err + +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasSession) SolverLockData() (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + return _Atlas.Contract.SolverLockData(&_Atlas.CallOpts) +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasCallerSession) SolverLockData() (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + return _Atlas.Contract.SolverLockData(&_Atlas.CallOpts) +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasCaller) SolverOpHashes(opts *bind.CallOpts, opHash [32]byte) (bool, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "solverOpHashes", opHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasSession) SolverOpHashes(opHash [32]byte) (bool, error) { + return _Atlas.Contract.SolverOpHashes(&_Atlas.CallOpts, opHash) +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasCallerSession) SolverOpHashes(opHash [32]byte) (bool, error) { + return _Atlas.Contract.SolverOpHashes(&_Atlas.CallOpts, opHash) +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasCaller) SurchargeRecipient(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "surchargeRecipient") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasSession) SurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.SurchargeRecipient(&_Atlas.CallOpts) +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasCallerSession) SurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.SurchargeRecipient(&_Atlas.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasSession) Symbol() (string, error) { + return _Atlas.Contract.Symbol(&_Atlas.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasCallerSession) Symbol() (string, error) { + return _Atlas.Contract.Symbol(&_Atlas.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasSession) TotalSupply() (*big.Int, error) { + return _Atlas.Contract.TotalSupply(&_Atlas.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasCallerSession) TotalSupply() (*big.Int, error) { + return _Atlas.Contract.TotalSupply(&_Atlas.CallOpts) +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasCaller) UnbondingCompleteBlock(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "unbondingCompleteBlock", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasSession) UnbondingCompleteBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.UnbondingCompleteBlock(&_Atlas.CallOpts, account) +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) UnbondingCompleteBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.UnbondingCompleteBlock(&_Atlas.CallOpts, account) +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasTransactor) BecomeSurchargeRecipient(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "becomeSurchargeRecipient") +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasSession) BecomeSurchargeRecipient() (*types.Transaction, error) { + return _Atlas.Contract.BecomeSurchargeRecipient(&_Atlas.TransactOpts) +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasTransactorSession) BecomeSurchargeRecipient() (*types.Transaction, error) { + return _Atlas.Contract.BecomeSurchargeRecipient(&_Atlas.TransactOpts) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Bond(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "bond", amount) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasSession) Bond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Bond(&_Atlas.TransactOpts, amount) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Bond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Bond(&_Atlas.TransactOpts, amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasTransactor) Borrow(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "borrow", amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasSession) Borrow(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Borrow(&_Atlas.TransactOpts, amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasTransactorSession) Borrow(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Borrow(&_Atlas.TransactOpts, amount) +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasTransactor) Contribute(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "contribute") +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasSession) Contribute() (*types.Transaction, error) { + return _Atlas.Contract.Contribute(&_Atlas.TransactOpts) +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasTransactorSession) Contribute() (*types.Transaction, error) { + return _Atlas.Contract.Contribute(&_Atlas.TransactOpts) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasTransactor) CreateExecutionEnvironment(opts *bind.TransactOpts, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "createExecutionEnvironment", user, control) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasSession) CreateExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.CreateExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasTransactorSession) CreateExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.CreateExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasTransactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasSession) Deposit() (*types.Transaction, error) { + return _Atlas.Contract.Deposit(&_Atlas.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasTransactorSession) Deposit() (*types.Transaction, error) { + return _Atlas.Contract.Deposit(&_Atlas.TransactOpts) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasTransactor) DepositAndBond(opts *bind.TransactOpts, amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "depositAndBond", amountToBond) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasSession) DepositAndBond(amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.DepositAndBond(&_Atlas.TransactOpts, amountToBond) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasTransactorSession) DepositAndBond(amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.DepositAndBond(&_Atlas.TransactOpts, amountToBond) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasTransactor) Execute(opts *bind.TransactOpts, dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "execute", dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasSession) Execute(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.Contract.Execute(&_Atlas.TransactOpts, dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasTransactorSession) Execute(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.Contract.Execute(&_Atlas.TransactOpts, dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasTransactor) GetExecutionEnvironment(opts *bind.TransactOpts, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "getExecutionEnvironment", user, control) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasSession) GetExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.GetExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasTransactorSession) GetExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.GetExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// Metacall is a paid mutator transaction binding the contract method 0x4683d90f. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool auctionWon) +func (_Atlas *AtlasTransactor) Metacall(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "metacall", userOp, solverOps, dAppOp) +} + +// Metacall is a paid mutator transaction binding the contract method 0x4683d90f. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool auctionWon) +func (_Atlas *AtlasSession) Metacall(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Atlas.Contract.Metacall(&_Atlas.TransactOpts, userOp, solverOps, dAppOp) +} + +// Metacall is a paid mutator transaction binding the contract method 0x4683d90f. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool auctionWon) +func (_Atlas *AtlasTransactorSession) Metacall(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Atlas.Contract.Metacall(&_Atlas.TransactOpts, userOp, solverOps, dAppOp) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasTransactor) Reconcile(opts *bind.TransactOpts, maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "reconcile", maxApprovedGasSpend) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasSession) Reconcile(maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Reconcile(&_Atlas.TransactOpts, maxApprovedGasSpend) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasTransactorSession) Reconcile(maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Reconcile(&_Atlas.TransactOpts, maxApprovedGasSpend) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Redeem(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "redeem", amount) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasSession) Redeem(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Redeem(&_Atlas.TransactOpts, amount) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Redeem(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Redeem(&_Atlas.TransactOpts, amount) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasTransactor) SolverCall(opts *bind.TransactOpts, ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "solverCall", ctx, solverOp, bidAmount, returnData) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasSession) SolverCall(ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.Contract.SolverCall(&_Atlas.TransactOpts, ctx, solverOp, bidAmount, returnData) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasTransactorSession) SolverCall(ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.Contract.SolverCall(&_Atlas.TransactOpts, ctx, solverOp, bidAmount, returnData) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactor) TransferDAppERC20(opts *bind.TransactOpts, token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferDAppERC20", token, destination, amount, user, control) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasSession) TransferDAppERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferDAppERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactorSession) TransferDAppERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferDAppERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasTransactor) TransferSurchargeRecipient(opts *bind.TransactOpts, newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferSurchargeRecipient", newRecipient) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasSession) TransferSurchargeRecipient(newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferSurchargeRecipient(&_Atlas.TransactOpts, newRecipient) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasTransactorSession) TransferSurchargeRecipient(newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferSurchargeRecipient(&_Atlas.TransactOpts, newRecipient) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactor) TransferUserERC20(opts *bind.TransactOpts, token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferUserERC20", token, destination, amount, user, control) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasSession) TransferUserERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferUserERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactorSession) TransferUserERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferUserERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Unbond(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "unbond", amount) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasSession) Unbond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Unbond(&_Atlas.TransactOpts, amount) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Unbond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Unbond(&_Atlas.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Withdraw(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "withdraw", amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasSession) Withdraw(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Withdraw(&_Atlas.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Withdraw(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Withdraw(&_Atlas.TransactOpts, amount) +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasTransactor) WithdrawSurcharge(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "withdrawSurcharge") +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasSession) WithdrawSurcharge() (*types.Transaction, error) { + return _Atlas.Contract.WithdrawSurcharge(&_Atlas.TransactOpts) +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasTransactorSession) WithdrawSurcharge() (*types.Transaction, error) { + return _Atlas.Contract.WithdrawSurcharge(&_Atlas.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasSession) Receive() (*types.Transaction, error) { + return _Atlas.Contract.Receive(&_Atlas.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasTransactorSession) Receive() (*types.Transaction, error) { + return _Atlas.Contract.Receive(&_Atlas.TransactOpts) +} + +// AtlasApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Atlas contract. +type AtlasApprovalIterator struct { + Event *AtlasApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasApproval represents a Approval event raised by the Atlas contract. +type AtlasApproval struct { + Owner common.Address + Spender common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 amount) +func (_Atlas *AtlasFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*AtlasApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &AtlasApprovalIterator{contract: _Atlas.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 amount) +func (_Atlas *AtlasFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *AtlasApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasApproval) + if err := _Atlas.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 amount) +func (_Atlas *AtlasFilterer) ParseApproval(log types.Log) (*AtlasApproval, error) { + event := new(AtlasApproval) + if err := _Atlas.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasBondIterator is returned from FilterBond and is used to iterate over the raw logs and unpacked data for Bond events raised by the Atlas contract. +type AtlasBondIterator struct { + Event *AtlasBond // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasBondIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasBond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasBond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasBondIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasBondIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasBond represents a Bond event raised by the Atlas contract. +type AtlasBond struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBond is a free log retrieval operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) FilterBond(opts *bind.FilterOpts, owner []common.Address) (*AtlasBondIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Bond", ownerRule) + if err != nil { + return nil, err + } + return &AtlasBondIterator{contract: _Atlas.contract, event: "Bond", logs: logs, sub: sub}, nil +} + +// WatchBond is a free log subscription operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) WatchBond(opts *bind.WatchOpts, sink chan<- *AtlasBond, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Bond", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasBond) + if err := _Atlas.contract.UnpackLog(event, "Bond", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBond is a log parse operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) ParseBond(log types.Log) (*AtlasBond, error) { + event := new(AtlasBond) + if err := _Atlas.contract.UnpackLog(event, "Bond", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasDAppDisabledIterator is returned from FilterDAppDisabled and is used to iterate over the raw logs and unpacked data for DAppDisabled events raised by the Atlas contract. +type AtlasDAppDisabledIterator struct { + Event *AtlasDAppDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasDAppDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasDAppDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasDAppDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasDAppDisabled represents a DAppDisabled event raised by the Atlas contract. +type AtlasDAppDisabled struct { + Control common.Address + Governance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppDisabled is a free log retrieval operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterDAppDisabled(opts *bind.FilterOpts, control []common.Address, governance []common.Address) (*AtlasDAppDisabledIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return &AtlasDAppDisabledIterator{contract: _Atlas.contract, event: "DAppDisabled", logs: logs, sub: sub}, nil +} + +// WatchDAppDisabled is a free log subscription operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchDAppDisabled(opts *bind.WatchOpts, sink chan<- *AtlasDAppDisabled, control []common.Address, governance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasDAppDisabled) + if err := _Atlas.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppDisabled is a log parse operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseDAppDisabled(log types.Log) (*AtlasDAppDisabled, error) { + event := new(AtlasDAppDisabled) + if err := _Atlas.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasDAppGovernanceChangedIterator is returned from FilterDAppGovernanceChanged and is used to iterate over the raw logs and unpacked data for DAppGovernanceChanged events raised by the Atlas contract. +type AtlasDAppGovernanceChangedIterator struct { + Event *AtlasDAppGovernanceChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasDAppGovernanceChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasDAppGovernanceChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasDAppGovernanceChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasDAppGovernanceChanged represents a DAppGovernanceChanged event raised by the Atlas contract. +type AtlasDAppGovernanceChanged struct { + Control common.Address + OldGovernance common.Address + NewGovernance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppGovernanceChanged is a free log retrieval operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterDAppGovernanceChanged(opts *bind.FilterOpts, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (*AtlasDAppGovernanceChangedIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasDAppGovernanceChangedIterator{contract: _Atlas.contract, event: "DAppGovernanceChanged", logs: logs, sub: sub}, nil +} + +// WatchDAppGovernanceChanged is a free log subscription operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchDAppGovernanceChanged(opts *bind.WatchOpts, sink chan<- *AtlasDAppGovernanceChanged, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasDAppGovernanceChanged) + if err := _Atlas.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppGovernanceChanged is a log parse operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseDAppGovernanceChanged(log types.Log) (*AtlasDAppGovernanceChanged, error) { + event := new(AtlasDAppGovernanceChanged) + if err := _Atlas.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasExecutionEnvironmentCreatedIterator is returned from FilterExecutionEnvironmentCreated and is used to iterate over the raw logs and unpacked data for ExecutionEnvironmentCreated events raised by the Atlas contract. +type AtlasExecutionEnvironmentCreatedIterator struct { + Event *AtlasExecutionEnvironmentCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasExecutionEnvironmentCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasExecutionEnvironmentCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasExecutionEnvironmentCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasExecutionEnvironmentCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasExecutionEnvironmentCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasExecutionEnvironmentCreated represents a ExecutionEnvironmentCreated event raised by the Atlas contract. +type AtlasExecutionEnvironmentCreated struct { + User common.Address + ExecutionEnvironment common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutionEnvironmentCreated is a free log retrieval operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) FilterExecutionEnvironmentCreated(opts *bind.FilterOpts, user []common.Address, executionEnvironment []common.Address) (*AtlasExecutionEnvironmentCreatedIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var executionEnvironmentRule []interface{} + for _, executionEnvironmentItem := range executionEnvironment { + executionEnvironmentRule = append(executionEnvironmentRule, executionEnvironmentItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "ExecutionEnvironmentCreated", userRule, executionEnvironmentRule) + if err != nil { + return nil, err + } + return &AtlasExecutionEnvironmentCreatedIterator{contract: _Atlas.contract, event: "ExecutionEnvironmentCreated", logs: logs, sub: sub}, nil +} + +// WatchExecutionEnvironmentCreated is a free log subscription operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) WatchExecutionEnvironmentCreated(opts *bind.WatchOpts, sink chan<- *AtlasExecutionEnvironmentCreated, user []common.Address, executionEnvironment []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var executionEnvironmentRule []interface{} + for _, executionEnvironmentItem := range executionEnvironment { + executionEnvironmentRule = append(executionEnvironmentRule, executionEnvironmentItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "ExecutionEnvironmentCreated", userRule, executionEnvironmentRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasExecutionEnvironmentCreated) + if err := _Atlas.contract.UnpackLog(event, "ExecutionEnvironmentCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutionEnvironmentCreated is a log parse operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) ParseExecutionEnvironmentCreated(log types.Log) (*AtlasExecutionEnvironmentCreated, error) { + event := new(AtlasExecutionEnvironmentCreated) + if err := _Atlas.contract.UnpackLog(event, "ExecutionEnvironmentCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasGovernanceTransferStartedIterator is returned from FilterGovernanceTransferStarted and is used to iterate over the raw logs and unpacked data for GovernanceTransferStarted events raised by the Atlas contract. +type AtlasGovernanceTransferStartedIterator struct { + Event *AtlasGovernanceTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasGovernanceTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasGovernanceTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasGovernanceTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasGovernanceTransferStarted represents a GovernanceTransferStarted event raised by the Atlas contract. +type AtlasGovernanceTransferStarted struct { + PreviousGovernance common.Address + NewGovernance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGovernanceTransferStarted is a free log retrieval operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) FilterGovernanceTransferStarted(opts *bind.FilterOpts, previousGovernance []common.Address, newGovernance []common.Address) (*AtlasGovernanceTransferStartedIterator, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "GovernanceTransferStarted", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasGovernanceTransferStartedIterator{contract: _Atlas.contract, event: "GovernanceTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchGovernanceTransferStarted is a free log subscription operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) WatchGovernanceTransferStarted(opts *bind.WatchOpts, sink chan<- *AtlasGovernanceTransferStarted, previousGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "GovernanceTransferStarted", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasGovernanceTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGovernanceTransferStarted is a log parse operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) ParseGovernanceTransferStarted(log types.Log) (*AtlasGovernanceTransferStarted, error) { + event := new(AtlasGovernanceTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasGovernanceTransferredIterator is returned from FilterGovernanceTransferred and is used to iterate over the raw logs and unpacked data for GovernanceTransferred events raised by the Atlas contract. +type AtlasGovernanceTransferredIterator struct { + Event *AtlasGovernanceTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasGovernanceTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasGovernanceTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasGovernanceTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasGovernanceTransferred represents a GovernanceTransferred event raised by the Atlas contract. +type AtlasGovernanceTransferred struct { + PreviousGovernance common.Address + NewGovernance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGovernanceTransferred is a free log retrieval operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) FilterGovernanceTransferred(opts *bind.FilterOpts, previousGovernance []common.Address, newGovernance []common.Address) (*AtlasGovernanceTransferredIterator, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "GovernanceTransferred", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasGovernanceTransferredIterator{contract: _Atlas.contract, event: "GovernanceTransferred", logs: logs, sub: sub}, nil +} + +// WatchGovernanceTransferred is a free log subscription operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) WatchGovernanceTransferred(opts *bind.WatchOpts, sink chan<- *AtlasGovernanceTransferred, previousGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "GovernanceTransferred", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasGovernanceTransferred) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGovernanceTransferred is a log parse operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) ParseGovernanceTransferred(log types.Log) (*AtlasGovernanceTransferred, error) { + event := new(AtlasGovernanceTransferred) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasMetacallResultIterator is returned from FilterMetacallResult and is used to iterate over the raw logs and unpacked data for MetacallResult events raised by the Atlas contract. +type AtlasMetacallResultIterator struct { + Event *AtlasMetacallResult // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasMetacallResultIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasMetacallResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasMetacallResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasMetacallResultIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasMetacallResultIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasMetacallResult represents a MetacallResult event raised by the Atlas contract. +type AtlasMetacallResult struct { + Bundler common.Address + User common.Address + SolverSuccessful bool + DisbursementSuccessful bool + EthPaidToBundler *big.Int + NetGasSurcharge *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMetacallResult is a free log retrieval operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) FilterMetacallResult(opts *bind.FilterOpts, bundler []common.Address, user []common.Address) (*AtlasMetacallResultIterator, error) { + + var bundlerRule []interface{} + for _, bundlerItem := range bundler { + bundlerRule = append(bundlerRule, bundlerItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "MetacallResult", bundlerRule, userRule) + if err != nil { + return nil, err + } + return &AtlasMetacallResultIterator{contract: _Atlas.contract, event: "MetacallResult", logs: logs, sub: sub}, nil +} + +// WatchMetacallResult is a free log subscription operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) WatchMetacallResult(opts *bind.WatchOpts, sink chan<- *AtlasMetacallResult, bundler []common.Address, user []common.Address) (event.Subscription, error) { + + var bundlerRule []interface{} + for _, bundlerItem := range bundler { + bundlerRule = append(bundlerRule, bundlerItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "MetacallResult", bundlerRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasMetacallResult) + if err := _Atlas.contract.UnpackLog(event, "MetacallResult", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMetacallResult is a log parse operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) ParseMetacallResult(log types.Log) (*AtlasMetacallResult, error) { + event := new(AtlasMetacallResult) + if err := _Atlas.contract.UnpackLog(event, "MetacallResult", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasNewDAppSignatoryIterator is returned from FilterNewDAppSignatory and is used to iterate over the raw logs and unpacked data for NewDAppSignatory events raised by the Atlas contract. +type AtlasNewDAppSignatoryIterator struct { + Event *AtlasNewDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasNewDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasNewDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasNewDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasNewDAppSignatory represents a NewDAppSignatory event raised by the Atlas contract. +type AtlasNewDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDAppSignatory is a free log retrieval operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterNewDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasNewDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasNewDAppSignatoryIterator{contract: _Atlas.contract, event: "NewDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchNewDAppSignatory is a free log subscription operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchNewDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasNewDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasNewDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewDAppSignatory is a log parse operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseNewDAppSignatory(log types.Log) (*AtlasNewDAppSignatory, error) { + event := new(AtlasNewDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasRedeemIterator is returned from FilterRedeem and is used to iterate over the raw logs and unpacked data for Redeem events raised by the Atlas contract. +type AtlasRedeemIterator struct { + Event *AtlasRedeem // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasRedeemIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasRedeem) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasRedeem) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasRedeemIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasRedeemIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasRedeem represents a Redeem event raised by the Atlas contract. +type AtlasRedeem struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRedeem is a free log retrieval operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) FilterRedeem(opts *bind.FilterOpts, owner []common.Address) (*AtlasRedeemIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Redeem", ownerRule) + if err != nil { + return nil, err + } + return &AtlasRedeemIterator{contract: _Atlas.contract, event: "Redeem", logs: logs, sub: sub}, nil +} + +// WatchRedeem is a free log subscription operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) WatchRedeem(opts *bind.WatchOpts, sink chan<- *AtlasRedeem, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Redeem", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasRedeem) + if err := _Atlas.contract.UnpackLog(event, "Redeem", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRedeem is a log parse operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) ParseRedeem(log types.Log) (*AtlasRedeem, error) { + event := new(AtlasRedeem) + if err := _Atlas.contract.UnpackLog(event, "Redeem", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasRemovedDAppSignatoryIterator is returned from FilterRemovedDAppSignatory and is used to iterate over the raw logs and unpacked data for RemovedDAppSignatory events raised by the Atlas contract. +type AtlasRemovedDAppSignatoryIterator struct { + Event *AtlasRemovedDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasRemovedDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasRemovedDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasRemovedDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasRemovedDAppSignatory represents a RemovedDAppSignatory event raised by the Atlas contract. +type AtlasRemovedDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRemovedDAppSignatory is a free log retrieval operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterRemovedDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasRemovedDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasRemovedDAppSignatoryIterator{contract: _Atlas.contract, event: "RemovedDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchRemovedDAppSignatory is a free log subscription operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchRemovedDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasRemovedDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasRemovedDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRemovedDAppSignatory is a log parse operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseRemovedDAppSignatory(log types.Log) (*AtlasRemovedDAppSignatory, error) { + event := new(AtlasRemovedDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSolverTxResultIterator is returned from FilterSolverTxResult and is used to iterate over the raw logs and unpacked data for SolverTxResult events raised by the Atlas contract. +type AtlasSolverTxResultIterator struct { + Event *AtlasSolverTxResult // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSolverTxResultIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSolverTxResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSolverTxResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSolverTxResultIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSolverTxResultIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSolverTxResult represents a SolverTxResult event raised by the Atlas contract. +type AtlasSolverTxResult struct { + SolverTo common.Address + SolverFrom common.Address + DAppControl common.Address + BidToken common.Address + BidAmount *big.Int + Executed bool + Success bool + Result *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSolverTxResult is a free log retrieval operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) FilterSolverTxResult(opts *bind.FilterOpts, solverTo []common.Address, solverFrom []common.Address, dAppControl []common.Address) (*AtlasSolverTxResultIterator, error) { + + var solverToRule []interface{} + for _, solverToItem := range solverTo { + solverToRule = append(solverToRule, solverToItem) + } + var solverFromRule []interface{} + for _, solverFromItem := range solverFrom { + solverFromRule = append(solverFromRule, solverFromItem) + } + var dAppControlRule []interface{} + for _, dAppControlItem := range dAppControl { + dAppControlRule = append(dAppControlRule, dAppControlItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SolverTxResult", solverToRule, solverFromRule, dAppControlRule) + if err != nil { + return nil, err + } + return &AtlasSolverTxResultIterator{contract: _Atlas.contract, event: "SolverTxResult", logs: logs, sub: sub}, nil +} + +// WatchSolverTxResult is a free log subscription operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) WatchSolverTxResult(opts *bind.WatchOpts, sink chan<- *AtlasSolverTxResult, solverTo []common.Address, solverFrom []common.Address, dAppControl []common.Address) (event.Subscription, error) { + + var solverToRule []interface{} + for _, solverToItem := range solverTo { + solverToRule = append(solverToRule, solverToItem) + } + var solverFromRule []interface{} + for _, solverFromItem := range solverFrom { + solverFromRule = append(solverFromRule, solverFromItem) + } + var dAppControlRule []interface{} + for _, dAppControlItem := range dAppControl { + dAppControlRule = append(dAppControlRule, dAppControlItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SolverTxResult", solverToRule, solverFromRule, dAppControlRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSolverTxResult) + if err := _Atlas.contract.UnpackLog(event, "SolverTxResult", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSolverTxResult is a log parse operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) ParseSolverTxResult(log types.Log) (*AtlasSolverTxResult, error) { + event := new(AtlasSolverTxResult) + if err := _Atlas.contract.UnpackLog(event, "SolverTxResult", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeRecipientTransferStartedIterator is returned from FilterSurchargeRecipientTransferStarted and is used to iterate over the raw logs and unpacked data for SurchargeRecipientTransferStarted events raised by the Atlas contract. +type AtlasSurchargeRecipientTransferStartedIterator struct { + Event *AtlasSurchargeRecipientTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeRecipientTransferStarted represents a SurchargeRecipientTransferStarted event raised by the Atlas contract. +type AtlasSurchargeRecipientTransferStarted struct { + CurrentRecipient common.Address + NewRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeRecipientTransferStarted is a free log retrieval operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address currentRecipient, address newRecipient) +func (_Atlas *AtlasFilterer) FilterSurchargeRecipientTransferStarted(opts *bind.FilterOpts) (*AtlasSurchargeRecipientTransferStartedIterator, error) { + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeRecipientTransferStarted") + if err != nil { + return nil, err + } + return &AtlasSurchargeRecipientTransferStartedIterator{contract: _Atlas.contract, event: "SurchargeRecipientTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchSurchargeRecipientTransferStarted is a free log subscription operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address currentRecipient, address newRecipient) +func (_Atlas *AtlasFilterer) WatchSurchargeRecipientTransferStarted(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeRecipientTransferStarted) (event.Subscription, error) { + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeRecipientTransferStarted") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeRecipientTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeRecipientTransferStarted is a log parse operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address currentRecipient, address newRecipient) +func (_Atlas *AtlasFilterer) ParseSurchargeRecipientTransferStarted(log types.Log) (*AtlasSurchargeRecipientTransferStarted, error) { + event := new(AtlasSurchargeRecipientTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeRecipientTransferredIterator is returned from FilterSurchargeRecipientTransferred and is used to iterate over the raw logs and unpacked data for SurchargeRecipientTransferred events raised by the Atlas contract. +type AtlasSurchargeRecipientTransferredIterator struct { + Event *AtlasSurchargeRecipientTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeRecipientTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeRecipientTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeRecipientTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeRecipientTransferred represents a SurchargeRecipientTransferred event raised by the Atlas contract. +type AtlasSurchargeRecipientTransferred struct { + NewRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeRecipientTransferred is a free log retrieval operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address newRecipient) +func (_Atlas *AtlasFilterer) FilterSurchargeRecipientTransferred(opts *bind.FilterOpts) (*AtlasSurchargeRecipientTransferredIterator, error) { + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeRecipientTransferred") + if err != nil { + return nil, err + } + return &AtlasSurchargeRecipientTransferredIterator{contract: _Atlas.contract, event: "SurchargeRecipientTransferred", logs: logs, sub: sub}, nil +} + +// WatchSurchargeRecipientTransferred is a free log subscription operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address newRecipient) +func (_Atlas *AtlasFilterer) WatchSurchargeRecipientTransferred(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeRecipientTransferred) (event.Subscription, error) { + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeRecipientTransferred") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeRecipientTransferred) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeRecipientTransferred is a log parse operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address newRecipient) +func (_Atlas *AtlasFilterer) ParseSurchargeRecipientTransferred(log types.Log) (*AtlasSurchargeRecipientTransferred, error) { + event := new(AtlasSurchargeRecipientTransferred) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeWithdrawnIterator is returned from FilterSurchargeWithdrawn and is used to iterate over the raw logs and unpacked data for SurchargeWithdrawn events raised by the Atlas contract. +type AtlasSurchargeWithdrawnIterator struct { + Event *AtlasSurchargeWithdrawn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeWithdrawnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeWithdrawn represents a SurchargeWithdrawn event raised by the Atlas contract. +type AtlasSurchargeWithdrawn struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeWithdrawn is a free log retrieval operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address to, uint256 amount) +func (_Atlas *AtlasFilterer) FilterSurchargeWithdrawn(opts *bind.FilterOpts) (*AtlasSurchargeWithdrawnIterator, error) { + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeWithdrawn") + if err != nil { + return nil, err + } + return &AtlasSurchargeWithdrawnIterator{contract: _Atlas.contract, event: "SurchargeWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchSurchargeWithdrawn is a free log subscription operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address to, uint256 amount) +func (_Atlas *AtlasFilterer) WatchSurchargeWithdrawn(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeWithdrawn) (event.Subscription, error) { + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeWithdrawn") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeWithdrawn) + if err := _Atlas.contract.UnpackLog(event, "SurchargeWithdrawn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeWithdrawn is a log parse operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address to, uint256 amount) +func (_Atlas *AtlasFilterer) ParseSurchargeWithdrawn(log types.Log) (*AtlasSurchargeWithdrawn, error) { + event := new(AtlasSurchargeWithdrawn) + if err := _Atlas.contract.UnpackLog(event, "SurchargeWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Atlas contract. +type AtlasTransferIterator struct { + Event *AtlasTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasTransfer represents a Transfer event raised by the Atlas contract. +type AtlasTransfer struct { + From common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*AtlasTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &AtlasTransferIterator{contract: _Atlas.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *AtlasTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasTransfer) + if err := _Atlas.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) ParseTransfer(log types.Log) (*AtlasTransfer, error) { + event := new(AtlasTransfer) + if err := _Atlas.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasUnbondIterator is returned from FilterUnbond and is used to iterate over the raw logs and unpacked data for Unbond events raised by the Atlas contract. +type AtlasUnbondIterator struct { + Event *AtlasUnbond // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasUnbondIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasUnbond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasUnbond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasUnbondIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasUnbondIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasUnbond represents a Unbond event raised by the Atlas contract. +type AtlasUnbond struct { + Owner common.Address + Amount *big.Int + EarliestAvailable *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnbond is a free log retrieval operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) FilterUnbond(opts *bind.FilterOpts, owner []common.Address) (*AtlasUnbondIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Unbond", ownerRule) + if err != nil { + return nil, err + } + return &AtlasUnbondIterator{contract: _Atlas.contract, event: "Unbond", logs: logs, sub: sub}, nil +} + +// WatchUnbond is a free log subscription operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) WatchUnbond(opts *bind.WatchOpts, sink chan<- *AtlasUnbond, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Unbond", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasUnbond) + if err := _Atlas.contract.UnpackLog(event, "Unbond", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnbond is a log parse operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) ParseUnbond(log types.Log) (*AtlasUnbond, error) { + event := new(AtlasUnbond) + if err := _Atlas.contract.UnpackLog(event, "Unbond", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/atlas/1.1.0/abi.json b/contract/atlas/1.1.0/abi.json new file mode 100644 index 0000000..baa9dd7 --- /dev/null +++ b/contract/atlas/1.1.0/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[{"name":"escrowDuration","type":"uint256","internalType":"uint256"},{"name":"atlasSurchargeRate","type":"uint256","internalType":"uint256"},{"name":"bundlerSurchargeRate","type":"uint256","internalType":"uint256"},{"name":"verification","type":"address","internalType":"address"},{"name":"simulator","type":"address","internalType":"address"},{"name":"initialSurchargeRecipient","type":"address","internalType":"address"},{"name":"l2GasCalculator","type":"address","internalType":"address"},{"name":"factoryLib","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ATLAS_SURCHARGE_RATE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BUNDLER_SURCHARGE_RATE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ESCROW_DURATION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY_LIB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FIXED_GAS_OFFSET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"L2_GAS_CALCULATOR","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SCALE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SIMULATOR","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERIFICATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAtlasVerification"}],"stateMutability":"view"},{"type":"function","name":"accessData","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"bonded","type":"uint112","internalType":"uint112"},{"name":"lastAccessedBlock","type":"uint32","internalType":"uint32"},{"name":"auctionWins","type":"uint24","internalType":"uint24"},{"name":"auctionFails","type":"uint24","internalType":"uint24"},{"name":"totalGasValueUsed","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"accountLastActiveBlock","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBonded","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfUnbonding","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"becomeSurchargeRecipient","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bond","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bondedTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"borrow","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"contribute","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"createExecutionEnvironment","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"executionEnvironment","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeSurcharge","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndBond","inputs":[{"name":"amountToBond","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"dConfig","type":"tuple","internalType":"struct DAppConfig","components":[{"name":"to","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"solverGasLimit","type":"uint32","internalType":"uint32"}]},{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"isSimulation","type":"bool","internalType":"bool"}],"outputs":[{"name":"ctx","type":"tuple","internalType":"struct Context","components":[{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"solverOutcome","type":"uint24","internalType":"uint24"},{"name":"solverIndex","type":"uint8","internalType":"uint8"},{"name":"solverCount","type":"uint8","internalType":"uint8"},{"name":"callDepth","type":"uint8","internalType":"uint8"},{"name":"phase","type":"uint8","internalType":"uint8"},{"name":"solverSuccessful","type":"bool","internalType":"bool"},{"name":"paymentsSuccessful","type":"bool","internalType":"bool"},{"name":"bidFind","type":"bool","internalType":"bool"},{"name":"isSimulation","type":"bool","internalType":"bool"},{"name":"bundler","type":"address","internalType":"address"}]}],"stateMutability":"payable"},{"type":"function","name":"getExecutionEnvironment","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"exists","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isUnlocked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[],"outputs":[{"name":"activeEnvironment","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"phase","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"metacall","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"gasRefundBeneficiary","type":"address","internalType":"address"}],"outputs":[{"name":"auctionWon","type":"bool","internalType":"bool"}],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"pendingSurchargeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"reconcile","inputs":[{"name":"maxApprovedGasSpend","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owed","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"shortfall","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"solverCall","inputs":[{"name":"ctx","type":"tuple","internalType":"struct Context","components":[{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"solverOutcome","type":"uint24","internalType":"uint24"},{"name":"solverIndex","type":"uint8","internalType":"uint8"},{"name":"solverCount","type":"uint8","internalType":"uint8"},{"name":"callDepth","type":"uint8","internalType":"uint8"},{"name":"phase","type":"uint8","internalType":"uint8"},{"name":"solverSuccessful","type":"bool","internalType":"bool"},{"name":"paymentsSuccessful","type":"bool","internalType":"bool"},{"name":"bidFind","type":"bool","internalType":"bool"},{"name":"isSimulation","type":"bool","internalType":"bool"},{"name":"bundler","type":"address","internalType":"address"}]},{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"solverTracker","type":"tuple","internalType":"struct SolverTracker","components":[{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"floor","type":"uint256","internalType":"uint256"},{"name":"ceiling","type":"uint256","internalType":"uint256"},{"name":"etherIsBidToken","type":"bool","internalType":"bool"},{"name":"invertsBidValue","type":"bool","internalType":"bool"}]}],"stateMutability":"payable"},{"type":"function","name":"solverLockData","inputs":[],"outputs":[{"name":"currentSolver","type":"address","internalType":"address"},{"name":"calledBack","type":"bool","internalType":"bool"},{"name":"fulfilled","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"solverOpHashes","inputs":[{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"surchargeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferDAppERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferSurchargeRecipient","inputs":[{"name":"newRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferUserERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unbond","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unbondingCompleteBlock","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawSurcharge","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Bond","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DAppDisabled","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"DAppGovernanceChanged","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"oldGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"ExecutionEnvironmentCreated","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"executionEnvironment","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"GovernanceTransferStarted","inputs":[{"name":"previousGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"GovernanceTransferred","inputs":[{"name":"previousGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MetacallResult","inputs":[{"name":"bundler","type":"address","indexed":true,"internalType":"address"},{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"solverSuccessful","type":"bool","indexed":false,"internalType":"bool"},{"name":"disbursementSuccessful","type":"bool","indexed":false,"internalType":"bool"},{"name":"ethPaidToBundler","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"netGasSurcharge","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"Redeem","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RemovedDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"SolverTxResult","inputs":[{"name":"solverTo","type":"address","indexed":true,"internalType":"address"},{"name":"solverFrom","type":"address","indexed":true,"internalType":"address"},{"name":"dAppControl","type":"address","indexed":true,"internalType":"address"},{"name":"bidToken","type":"address","indexed":false,"internalType":"address"},{"name":"bidAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executed","type":"bool","indexed":false,"internalType":"bool"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"},{"name":"result","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SurchargeRecipientTransferStarted","inputs":[{"name":"currentRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"newRecipient","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SurchargeRecipientTransferred","inputs":[{"name":"newRecipient","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SurchargeWithdrawn","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unbond","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"earliestAvailable","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AllocateValueDelegatecallFail","inputs":[]},{"type":"error","name":"AllocateValueFail","inputs":[]},{"type":"error","name":"AllocateValueSimFail","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlteredControl","inputs":[]},{"type":"error","name":"AtlasLockActive","inputs":[]},{"type":"error","name":"BalanceNotReconciled","inputs":[]},{"type":"error","name":"BidFindSuccessful","inputs":[{"name":"bidAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BidNotPaid","inputs":[]},{"type":"error","name":"BothPreOpsAndUserReturnDataCannotBeTracked","inputs":[]},{"type":"error","name":"BothUserAndDAppNoncesCannotBeSequential","inputs":[]},{"type":"error","name":"CallbackNotCalled","inputs":[]},{"type":"error","name":"DAppNotEnabled","inputs":[]},{"type":"error","name":"DoubleReconcile","inputs":[]},{"type":"error","name":"EnvironmentMismatch","inputs":[]},{"type":"error","name":"EscrowLockActive","inputs":[]},{"type":"error","name":"ExecutionEnvironmentBalanceTooLow","inputs":[]},{"type":"error","name":"InsufficientAtlETHBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientBalanceForDeduction","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"requested","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientEscrow","inputs":[]},{"type":"error","name":"InsufficientFunds","inputs":[]},{"type":"error","name":"InsufficientLocalFunds","inputs":[]},{"type":"error","name":"InsufficientSolverBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"holds","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTotalBalance","inputs":[{"name":"shortfall","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidAccess","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"InvalidCodeHash","inputs":[]},{"type":"error","name":"InvalidControl","inputs":[]},{"type":"error","name":"InvalidDAppControl","inputs":[]},{"type":"error","name":"InvalidEntry","inputs":[]},{"type":"error","name":"InvalidEntryFunction","inputs":[]},{"type":"error","name":"InvalidEnvironment","inputs":[]},{"type":"error","name":"InvalidEscrowDuration","inputs":[]},{"type":"error","name":"InvalidExecutionEnvironment","inputs":[{"name":"correctEnvironment","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidLockState","inputs":[]},{"type":"error","name":"InvalidSignatory","inputs":[]},{"type":"error","name":"InvalidSolver","inputs":[]},{"type":"error","name":"InvalidSolverFrom","inputs":[{"name":"solverFrom","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTo","inputs":[]},{"type":"error","name":"InvalidUser","inputs":[]},{"type":"error","name":"InvertBidValueCannotBeExPostBids","inputs":[]},{"type":"error","name":"InvertedBidExceedsCeiling","inputs":[]},{"type":"error","name":"LedgerBalancing","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"LedgerFinalized","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MissingFunds","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MustBeDelegatecalled","inputs":[]},{"type":"error","name":"NoAuctionWinner","inputs":[]},{"type":"error","name":"NoDelegatecall","inputs":[]},{"type":"error","name":"NoUnfilledRequests","inputs":[]},{"type":"error","name":"NoUnusedNonceInBitmap","inputs":[]},{"type":"error","name":"NotEnvironmentOwner","inputs":[]},{"type":"error","name":"NotImplemented","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"OnlyAtlas","inputs":[]},{"type":"error","name":"OnlyGovernance","inputs":[]},{"type":"error","name":"PostOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PostOpsDelegatecallReturnedFalse","inputs":[]},{"type":"error","name":"PostOpsFail","inputs":[]},{"type":"error","name":"PostOpsSimFail","inputs":[]},{"type":"error","name":"PostSolverFailed","inputs":[]},{"type":"error","name":"PreOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PreOpsFail","inputs":[]},{"type":"error","name":"PreOpsSimFail","inputs":[]},{"type":"error","name":"PreSolverFailed","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SignatoryActive","inputs":[]},{"type":"error","name":"SimulationPassed","inputs":[]},{"type":"error","name":"SimulatorBalanceTooLow","inputs":[]},{"type":"error","name":"SolverMustReconcile","inputs":[]},{"type":"error","name":"SolverOpReverted","inputs":[]},{"type":"error","name":"SolverSimFail","inputs":[{"name":"solverOutcomeResult","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnbalancedAccounting","inputs":[]},{"type":"error","name":"UncoveredResult","inputs":[]},{"type":"error","name":"UnexpectedNonRevert","inputs":[]},{"type":"error","name":"Unreachable","inputs":[]},{"type":"error","name":"UserNotFulfilled","inputs":[]},{"type":"error","name":"UserOpFail","inputs":[]},{"type":"error","name":"UserOpSimFail","inputs":[]},{"type":"error","name":"UserOpValueExceedsBalance","inputs":[]},{"type":"error","name":"UserSimulationFailed","inputs":[]},{"type":"error","name":"UserSimulationSucceeded","inputs":[]},{"type":"error","name":"UserUnexpectedSuccess","inputs":[]},{"type":"error","name":"UserWrapperCallFail","inputs":[]},{"type":"error","name":"UserWrapperDelegatecallFail","inputs":[]},{"type":"error","name":"ValidCalls","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"VerificationSimFail","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"WrongDepth","inputs":[]},{"type":"error","name":"WrongPhase","inputs":[]}] \ No newline at end of file diff --git a/contract/atlas/1.1.0/atlas.go b/contract/atlas/1.1.0/atlas.go new file mode 100644 index 0000000..88ba35a --- /dev/null +++ b/contract/atlas/1.1.0/atlas.go @@ -0,0 +1,4209 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package atlas_1_1_0 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// Context is an auto generated low-level Go binding around an user-defined struct. +type Context struct { + UserOpHash [32]byte + ExecutionEnvironment common.Address + SolverOutcome *big.Int + SolverIndex uint8 + SolverCount uint8 + CallDepth uint8 + Phase uint8 + SolverSuccessful bool + PaymentsSuccessful bool + BidFind bool + IsSimulation bool + Bundler common.Address +} + +// DAppConfig is an auto generated low-level Go binding around an user-defined struct. +type DAppConfig struct { + To common.Address + CallConfig uint32 + BidToken common.Address + SolverGasLimit uint32 +} + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// SolverTracker is an auto generated low-level Go binding around an user-defined struct. +type SolverTracker struct { + BidAmount *big.Int + Floor *big.Int + Ceiling *big.Int + EtherIsBidToken bool + InvertsBidValue bool +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// AtlasMetaData contains all meta data concerning the Atlas contract. +var AtlasMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"escrowDuration\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"atlasSurchargeRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"bundlerSurchargeRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verification\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"simulator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialSurchargeRecipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"l2GasCalculator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"factoryLib\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ATLAS_SURCHARGE_RATE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BUNDLER_SURCHARGE_RATE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ESCROW_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FACTORY_LIB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FIXED_GAS_OFFSET\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_GAS_CALCULATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SCALE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SIMULATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERIFICATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAtlasVerification\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"accessData\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"bonded\",\"type\":\"uint112\",\"internalType\":\"uint112\"},{\"name\":\"lastAccessedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"auctionWins\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"auctionFails\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"totalGasValueUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"accountLastActiveBlock\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOfBonded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOfUnbonding\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"becomeSurchargeRecipient\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bond\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bondedTotalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"borrow\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"contribute\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"createExecutionEnvironment\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeSurcharge\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndBond\",\"inputs\":[{\"name\":\"amountToBond\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"dConfig\",\"type\":\"tuple\",\"internalType\":\"structDAppConfig\",\"components\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"ctx\",\"type\":\"tuple\",\"internalType\":\"structContext\",\"components\":[{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverOutcome\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"solverIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverCount\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"callDepth\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"phase\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"paymentsSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bidFind\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getExecutionEnvironment\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"exists\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isUnlocked\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lock\",\"inputs\":[],\"outputs\":[{\"name\":\"activeEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"phase\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"metacall\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"gasRefundBeneficiary\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"auctionWon\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingSurchargeRecipient\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"reconcile\",\"inputs\":[{\"name\":\"maxApprovedGasSpend\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"owed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"redeem\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"shortfall\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"solverCall\",\"inputs\":[{\"name\":\"ctx\",\"type\":\"tuple\",\"internalType\":\"structContext\",\"components\":[{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverOutcome\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"solverIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverCount\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"callDepth\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"phase\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"paymentsSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bidFind\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"solverTracker\",\"type\":\"tuple\",\"internalType\":\"structSolverTracker\",\"components\":[{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"floor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ceiling\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"etherIsBidToken\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"invertsBidValue\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"solverLockData\",\"inputs\":[],\"outputs\":[{\"name\":\"currentSolver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"calledBack\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"fulfilled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"solverOpHashes\",\"inputs\":[{\"name\":\"opHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"surchargeRecipient\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferDAppERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferSurchargeRecipient\",\"inputs\":[{\"name\":\"newRecipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferUserERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unbond\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unbondingCompleteBlock\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSurcharge\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Bond\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Burn\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DAppDisabled\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DAppGovernanceChanged\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutionEnvironmentCreated\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GovernanceTransferStarted\",\"inputs\":[{\"name\":\"previousGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GovernanceTransferred\",\"inputs\":[{\"name\":\"previousGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MetacallResult\",\"inputs\":[{\"name\":\"bundler\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"solverSuccessful\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"disbursementSuccessful\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"ethPaidToBundler\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"netGasSurcharge\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Redeem\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RemovedDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SolverTxResult\",\"inputs\":[{\"name\":\"solverTo\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"solverFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"dAppControl\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"bidToken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"executed\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"success\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"result\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SurchargeRecipientTransferStarted\",\"inputs\":[{\"name\":\"currentRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SurchargeRecipientTransferred\",\"inputs\":[{\"name\":\"newRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SurchargeWithdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unbond\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"earliestAvailable\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AllocateValueDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlteredControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AtlasLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BalanceNotReconciled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidFindSuccessful\",\"inputs\":[{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BidNotPaid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallbackNotCalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DAppNotEnabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DoubleReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnvironmentMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EscrowLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAtlETHBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientBalanceForDeduction\",\"inputs\":[{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requested\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientEscrow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientLocalFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientSolverBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"holds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientTotalBalance\",\"inputs\":[{\"name\":\"shortfall\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidAccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodeHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDAppControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntry\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntryFunction\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEnvironment\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEscrowDuration\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidExecutionEnvironment\",\"inputs\":[{\"name\":\"correctEnvironment\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidLockState\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatory\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolver\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolverFrom\",\"inputs\":[{\"name\":\"solverFrom\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTo\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidUser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertBidValueCannotBeExPostBids\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertedBidExceedsCeiling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LedgerBalancing\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"LedgerFinalized\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MissingFunds\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MustBeDelegatecalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoAuctionWinner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoDelegatecall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnfilledRequests\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnusedNonceInBitmap\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEnvironmentOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotImplemented\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAtlas\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyGovernance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallReturnedFalse\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\",\"inputs\":[{\"name\":\"bits\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SignatoryActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulationPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulatorBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverMustReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverOpReverted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverSimFail\",\"inputs\":[{\"name\":\"solverOutcomeResult\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnbalancedAccounting\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UncoveredResult\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedNonRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unreachable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserNotFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpValueExceedsBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationSucceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserUnexpectedSuccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperCallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidCalls\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"VerificationSimFail\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"WrongDepth\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongPhase\",\"inputs\":[]}]", +} + +// AtlasABI is the input ABI used to generate the binding from. +// Deprecated: Use AtlasMetaData.ABI instead. +var AtlasABI = AtlasMetaData.ABI + +// Atlas is an auto generated Go binding around an Ethereum contract. +type Atlas struct { + AtlasCaller // Read-only binding to the contract + AtlasTransactor // Write-only binding to the contract + AtlasFilterer // Log filterer for contract events +} + +// AtlasCaller is an auto generated read-only Go binding around an Ethereum contract. +type AtlasCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AtlasTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AtlasFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AtlasSession struct { + Contract *Atlas // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AtlasCallerSession struct { + Contract *AtlasCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AtlasTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AtlasTransactorSession struct { + Contract *AtlasTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasRaw is an auto generated low-level Go binding around an Ethereum contract. +type AtlasRaw struct { + Contract *Atlas // Generic contract binding to access the raw methods on +} + +// AtlasCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AtlasCallerRaw struct { + Contract *AtlasCaller // Generic read-only contract binding to access the raw methods on +} + +// AtlasTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AtlasTransactorRaw struct { + Contract *AtlasTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAtlas creates a new instance of Atlas, bound to a specific deployed contract. +func NewAtlas(address common.Address, backend bind.ContractBackend) (*Atlas, error) { + contract, err := bindAtlas(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Atlas{AtlasCaller: AtlasCaller{contract: contract}, AtlasTransactor: AtlasTransactor{contract: contract}, AtlasFilterer: AtlasFilterer{contract: contract}}, nil +} + +// NewAtlasCaller creates a new read-only instance of Atlas, bound to a specific deployed contract. +func NewAtlasCaller(address common.Address, caller bind.ContractCaller) (*AtlasCaller, error) { + contract, err := bindAtlas(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AtlasCaller{contract: contract}, nil +} + +// NewAtlasTransactor creates a new write-only instance of Atlas, bound to a specific deployed contract. +func NewAtlasTransactor(address common.Address, transactor bind.ContractTransactor) (*AtlasTransactor, error) { + contract, err := bindAtlas(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AtlasTransactor{contract: contract}, nil +} + +// NewAtlasFilterer creates a new log filterer instance of Atlas, bound to a specific deployed contract. +func NewAtlasFilterer(address common.Address, filterer bind.ContractFilterer) (*AtlasFilterer, error) { + contract, err := bindAtlas(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AtlasFilterer{contract: contract}, nil +} + +// bindAtlas binds a generic wrapper to an already deployed contract. +func bindAtlas(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AtlasABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Atlas *AtlasRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Atlas.Contract.AtlasCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Atlas *AtlasRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.Contract.AtlasTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Atlas *AtlasRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Atlas.Contract.AtlasTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Atlas *AtlasCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Atlas.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Atlas *AtlasTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Atlas *AtlasTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Atlas.Contract.contract.Transact(opts, method, params...) +} + +// ATLASSURCHARGERATE is a free data retrieval call binding the contract method 0x3173d012. +// +// Solidity: function ATLAS_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCaller) ATLASSURCHARGERATE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "ATLAS_SURCHARGE_RATE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ATLASSURCHARGERATE is a free data retrieval call binding the contract method 0x3173d012. +// +// Solidity: function ATLAS_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasSession) ATLASSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.ATLASSURCHARGERATE(&_Atlas.CallOpts) +} + +// ATLASSURCHARGERATE is a free data retrieval call binding the contract method 0x3173d012. +// +// Solidity: function ATLAS_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCallerSession) ATLASSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.ATLASSURCHARGERATE(&_Atlas.CallOpts) +} + +// BUNDLERSURCHARGERATE is a free data retrieval call binding the contract method 0x1df634ad. +// +// Solidity: function BUNDLER_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCaller) BUNDLERSURCHARGERATE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "BUNDLER_SURCHARGE_RATE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BUNDLERSURCHARGERATE is a free data retrieval call binding the contract method 0x1df634ad. +// +// Solidity: function BUNDLER_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasSession) BUNDLERSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.BUNDLERSURCHARGERATE(&_Atlas.CallOpts) +} + +// BUNDLERSURCHARGERATE is a free data retrieval call binding the contract method 0x1df634ad. +// +// Solidity: function BUNDLER_SURCHARGE_RATE() view returns(uint256) +func (_Atlas *AtlasCallerSession) BUNDLERSURCHARGERATE() (*big.Int, error) { + return _Atlas.Contract.BUNDLERSURCHARGERATE(&_Atlas.CallOpts) +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasCaller) ESCROWDURATION(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "ESCROW_DURATION") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasSession) ESCROWDURATION() (*big.Int, error) { + return _Atlas.Contract.ESCROWDURATION(&_Atlas.CallOpts) +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasCallerSession) ESCROWDURATION() (*big.Int, error) { + return _Atlas.Contract.ESCROWDURATION(&_Atlas.CallOpts) +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasCaller) FACTORYLIB(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "FACTORY_LIB") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasSession) FACTORYLIB() (common.Address, error) { + return _Atlas.Contract.FACTORYLIB(&_Atlas.CallOpts) +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasCallerSession) FACTORYLIB() (common.Address, error) { + return _Atlas.Contract.FACTORYLIB(&_Atlas.CallOpts) +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasCaller) FIXEDGASOFFSET(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "FIXED_GAS_OFFSET") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasSession) FIXEDGASOFFSET() (*big.Int, error) { + return _Atlas.Contract.FIXEDGASOFFSET(&_Atlas.CallOpts) +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasCallerSession) FIXEDGASOFFSET() (*big.Int, error) { + return _Atlas.Contract.FIXEDGASOFFSET(&_Atlas.CallOpts) +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasCaller) L2GASCALCULATOR(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "L2_GAS_CALCULATOR") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasSession) L2GASCALCULATOR() (common.Address, error) { + return _Atlas.Contract.L2GASCALCULATOR(&_Atlas.CallOpts) +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasCallerSession) L2GASCALCULATOR() (common.Address, error) { + return _Atlas.Contract.L2GASCALCULATOR(&_Atlas.CallOpts) +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasCaller) SCALE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "SCALE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasSession) SCALE() (*big.Int, error) { + return _Atlas.Contract.SCALE(&_Atlas.CallOpts) +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasCallerSession) SCALE() (*big.Int, error) { + return _Atlas.Contract.SCALE(&_Atlas.CallOpts) +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasCaller) SIMULATOR(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "SIMULATOR") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasSession) SIMULATOR() (common.Address, error) { + return _Atlas.Contract.SIMULATOR(&_Atlas.CallOpts) +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasCallerSession) SIMULATOR() (common.Address, error) { + return _Atlas.Contract.SIMULATOR(&_Atlas.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasCaller) VERIFICATION(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "VERIFICATION") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasSession) VERIFICATION() (common.Address, error) { + return _Atlas.Contract.VERIFICATION(&_Atlas.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasCallerSession) VERIFICATION() (common.Address, error) { + return _Atlas.Contract.VERIFICATION(&_Atlas.CallOpts) +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "accessData", account) + + outstruct := new(struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Bonded = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LastAccessedBlock = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.AuctionWins = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.AuctionFails = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TotalGasValueUsed = *abi.ConvertType(out[4], new(uint64)).(*uint64) + + return *outstruct, err + +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasSession) AccessData(account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasCallerSession) AccessData(account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasCaller) AccountLastActiveBlock(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "accountLastActiveBlock", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasSession) AccountLastActiveBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.AccountLastActiveBlock(&_Atlas.CallOpts, account) +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) AccountLastActiveBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.AccountLastActiveBlock(&_Atlas.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOf(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOf(&_Atlas.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOf(&_Atlas.CallOpts, account) +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOfBonded(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOfBonded", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOfBonded(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfBonded(&_Atlas.CallOpts, account) +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOfBonded(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfBonded(&_Atlas.CallOpts, account) +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOfUnbonding(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOfUnbonding", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOfUnbonding(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfUnbonding(&_Atlas.CallOpts, account) +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOfUnbonding(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfUnbonding(&_Atlas.CallOpts, account) +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasCaller) BondedTotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "bondedTotalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasSession) BondedTotalSupply() (*big.Int, error) { + return _Atlas.Contract.BondedTotalSupply(&_Atlas.CallOpts) +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasCallerSession) BondedTotalSupply() (*big.Int, error) { + return _Atlas.Contract.BondedTotalSupply(&_Atlas.CallOpts) +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasCaller) CumulativeSurcharge(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "cumulativeSurcharge") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasSession) CumulativeSurcharge() (*big.Int, error) { + return _Atlas.Contract.CumulativeSurcharge(&_Atlas.CallOpts) +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasCallerSession) CumulativeSurcharge() (*big.Int, error) { + return _Atlas.Contract.CumulativeSurcharge(&_Atlas.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasSession) Decimals() (uint8, error) { + return _Atlas.Contract.Decimals(&_Atlas.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasCallerSession) Decimals() (uint8, error) { + return _Atlas.Contract.Decimals(&_Atlas.CallOpts) +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasCaller) IsUnlocked(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "isUnlocked") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasSession) IsUnlocked() (bool, error) { + return _Atlas.Contract.IsUnlocked(&_Atlas.CallOpts) +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasCallerSession) IsUnlocked() (bool, error) { + return _Atlas.Contract.IsUnlocked(&_Atlas.CallOpts) +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasCaller) Lock(opts *bind.CallOpts) (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "lock") + + outstruct := new(struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 + }) + if err != nil { + return *outstruct, err + } + + outstruct.ActiveEnvironment = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.CallConfig = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.Phase = *abi.ConvertType(out[2], new(uint8)).(*uint8) + + return *outstruct, err + +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasSession) Lock() (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + return _Atlas.Contract.Lock(&_Atlas.CallOpts) +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasCallerSession) Lock() (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + return _Atlas.Contract.Lock(&_Atlas.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasSession) Name() (string, error) { + return _Atlas.Contract.Name(&_Atlas.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasCallerSession) Name() (string, error) { + return _Atlas.Contract.Name(&_Atlas.CallOpts) +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasCaller) PendingSurchargeRecipient(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "pendingSurchargeRecipient") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasSession) PendingSurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.PendingSurchargeRecipient(&_Atlas.CallOpts) +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasCallerSession) PendingSurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.PendingSurchargeRecipient(&_Atlas.CallOpts) +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasCaller) Shortfall(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "shortfall") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasSession) Shortfall() (*big.Int, error) { + return _Atlas.Contract.Shortfall(&_Atlas.CallOpts) +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasCallerSession) Shortfall() (*big.Int, error) { + return _Atlas.Contract.Shortfall(&_Atlas.CallOpts) +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasCaller) SolverLockData(opts *bind.CallOpts) (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "solverLockData") + + outstruct := new(struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.CurrentSolver = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.CalledBack = *abi.ConvertType(out[1], new(bool)).(*bool) + outstruct.Fulfilled = *abi.ConvertType(out[2], new(bool)).(*bool) + + return *outstruct, err + +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasSession) SolverLockData() (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + return _Atlas.Contract.SolverLockData(&_Atlas.CallOpts) +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasCallerSession) SolverLockData() (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + return _Atlas.Contract.SolverLockData(&_Atlas.CallOpts) +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasCaller) SolverOpHashes(opts *bind.CallOpts, opHash [32]byte) (bool, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "solverOpHashes", opHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasSession) SolverOpHashes(opHash [32]byte) (bool, error) { + return _Atlas.Contract.SolverOpHashes(&_Atlas.CallOpts, opHash) +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasCallerSession) SolverOpHashes(opHash [32]byte) (bool, error) { + return _Atlas.Contract.SolverOpHashes(&_Atlas.CallOpts, opHash) +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasCaller) SurchargeRecipient(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "surchargeRecipient") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasSession) SurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.SurchargeRecipient(&_Atlas.CallOpts) +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasCallerSession) SurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.SurchargeRecipient(&_Atlas.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasSession) Symbol() (string, error) { + return _Atlas.Contract.Symbol(&_Atlas.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasCallerSession) Symbol() (string, error) { + return _Atlas.Contract.Symbol(&_Atlas.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasSession) TotalSupply() (*big.Int, error) { + return _Atlas.Contract.TotalSupply(&_Atlas.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasCallerSession) TotalSupply() (*big.Int, error) { + return _Atlas.Contract.TotalSupply(&_Atlas.CallOpts) +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasCaller) UnbondingCompleteBlock(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "unbondingCompleteBlock", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasSession) UnbondingCompleteBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.UnbondingCompleteBlock(&_Atlas.CallOpts, account) +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) UnbondingCompleteBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.UnbondingCompleteBlock(&_Atlas.CallOpts, account) +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasTransactor) BecomeSurchargeRecipient(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "becomeSurchargeRecipient") +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasSession) BecomeSurchargeRecipient() (*types.Transaction, error) { + return _Atlas.Contract.BecomeSurchargeRecipient(&_Atlas.TransactOpts) +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasTransactorSession) BecomeSurchargeRecipient() (*types.Transaction, error) { + return _Atlas.Contract.BecomeSurchargeRecipient(&_Atlas.TransactOpts) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Bond(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "bond", amount) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasSession) Bond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Bond(&_Atlas.TransactOpts, amount) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Bond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Bond(&_Atlas.TransactOpts, amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasTransactor) Borrow(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "borrow", amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasSession) Borrow(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Borrow(&_Atlas.TransactOpts, amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasTransactorSession) Borrow(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Borrow(&_Atlas.TransactOpts, amount) +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasTransactor) Contribute(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "contribute") +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasSession) Contribute() (*types.Transaction, error) { + return _Atlas.Contract.Contribute(&_Atlas.TransactOpts) +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasTransactorSession) Contribute() (*types.Transaction, error) { + return _Atlas.Contract.Contribute(&_Atlas.TransactOpts) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasTransactor) CreateExecutionEnvironment(opts *bind.TransactOpts, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "createExecutionEnvironment", user, control) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasSession) CreateExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.CreateExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasTransactorSession) CreateExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.CreateExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasTransactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasSession) Deposit() (*types.Transaction, error) { + return _Atlas.Contract.Deposit(&_Atlas.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasTransactorSession) Deposit() (*types.Transaction, error) { + return _Atlas.Contract.Deposit(&_Atlas.TransactOpts) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasTransactor) DepositAndBond(opts *bind.TransactOpts, amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "depositAndBond", amountToBond) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasSession) DepositAndBond(amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.DepositAndBond(&_Atlas.TransactOpts, amountToBond) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasTransactorSession) DepositAndBond(amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.DepositAndBond(&_Atlas.TransactOpts, amountToBond) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasTransactor) Execute(opts *bind.TransactOpts, dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "execute", dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasSession) Execute(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.Contract.Execute(&_Atlas.TransactOpts, dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasTransactorSession) Execute(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.Contract.Execute(&_Atlas.TransactOpts, dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasTransactor) GetExecutionEnvironment(opts *bind.TransactOpts, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "getExecutionEnvironment", user, control) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasSession) GetExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.GetExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasTransactorSession) GetExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.GetExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// Metacall is a paid mutator transaction binding the contract method 0x0baf1745. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, address gasRefundBeneficiary) payable returns(bool auctionWon) +func (_Atlas *AtlasTransactor) Metacall(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, gasRefundBeneficiary common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "metacall", userOp, solverOps, dAppOp, gasRefundBeneficiary) +} + +// Metacall is a paid mutator transaction binding the contract method 0x0baf1745. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, address gasRefundBeneficiary) payable returns(bool auctionWon) +func (_Atlas *AtlasSession) Metacall(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, gasRefundBeneficiary common.Address) (*types.Transaction, error) { + return _Atlas.Contract.Metacall(&_Atlas.TransactOpts, userOp, solverOps, dAppOp, gasRefundBeneficiary) +} + +// Metacall is a paid mutator transaction binding the contract method 0x0baf1745. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, address gasRefundBeneficiary) payable returns(bool auctionWon) +func (_Atlas *AtlasTransactorSession) Metacall(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, gasRefundBeneficiary common.Address) (*types.Transaction, error) { + return _Atlas.Contract.Metacall(&_Atlas.TransactOpts, userOp, solverOps, dAppOp, gasRefundBeneficiary) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasTransactor) Reconcile(opts *bind.TransactOpts, maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "reconcile", maxApprovedGasSpend) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasSession) Reconcile(maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Reconcile(&_Atlas.TransactOpts, maxApprovedGasSpend) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasTransactorSession) Reconcile(maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Reconcile(&_Atlas.TransactOpts, maxApprovedGasSpend) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Redeem(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "redeem", amount) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasSession) Redeem(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Redeem(&_Atlas.TransactOpts, amount) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Redeem(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Redeem(&_Atlas.TransactOpts, amount) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasTransactor) SolverCall(opts *bind.TransactOpts, ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "solverCall", ctx, solverOp, bidAmount, returnData) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasSession) SolverCall(ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.Contract.SolverCall(&_Atlas.TransactOpts, ctx, solverOp, bidAmount, returnData) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasTransactorSession) SolverCall(ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.Contract.SolverCall(&_Atlas.TransactOpts, ctx, solverOp, bidAmount, returnData) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactor) TransferDAppERC20(opts *bind.TransactOpts, token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferDAppERC20", token, destination, amount, user, control) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasSession) TransferDAppERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferDAppERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactorSession) TransferDAppERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferDAppERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasTransactor) TransferSurchargeRecipient(opts *bind.TransactOpts, newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferSurchargeRecipient", newRecipient) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasSession) TransferSurchargeRecipient(newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferSurchargeRecipient(&_Atlas.TransactOpts, newRecipient) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasTransactorSession) TransferSurchargeRecipient(newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferSurchargeRecipient(&_Atlas.TransactOpts, newRecipient) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactor) TransferUserERC20(opts *bind.TransactOpts, token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferUserERC20", token, destination, amount, user, control) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasSession) TransferUserERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferUserERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactorSession) TransferUserERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferUserERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Unbond(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "unbond", amount) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasSession) Unbond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Unbond(&_Atlas.TransactOpts, amount) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Unbond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Unbond(&_Atlas.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Withdraw(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "withdraw", amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasSession) Withdraw(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Withdraw(&_Atlas.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Withdraw(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Withdraw(&_Atlas.TransactOpts, amount) +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasTransactor) WithdrawSurcharge(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "withdrawSurcharge") +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasSession) WithdrawSurcharge() (*types.Transaction, error) { + return _Atlas.Contract.WithdrawSurcharge(&_Atlas.TransactOpts) +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasTransactorSession) WithdrawSurcharge() (*types.Transaction, error) { + return _Atlas.Contract.WithdrawSurcharge(&_Atlas.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasSession) Receive() (*types.Transaction, error) { + return _Atlas.Contract.Receive(&_Atlas.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasTransactorSession) Receive() (*types.Transaction, error) { + return _Atlas.Contract.Receive(&_Atlas.TransactOpts) +} + +// AtlasBondIterator is returned from FilterBond and is used to iterate over the raw logs and unpacked data for Bond events raised by the Atlas contract. +type AtlasBondIterator struct { + Event *AtlasBond // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasBondIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasBond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasBond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasBondIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasBondIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasBond represents a Bond event raised by the Atlas contract. +type AtlasBond struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBond is a free log retrieval operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) FilterBond(opts *bind.FilterOpts, owner []common.Address) (*AtlasBondIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Bond", ownerRule) + if err != nil { + return nil, err + } + return &AtlasBondIterator{contract: _Atlas.contract, event: "Bond", logs: logs, sub: sub}, nil +} + +// WatchBond is a free log subscription operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) WatchBond(opts *bind.WatchOpts, sink chan<- *AtlasBond, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Bond", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasBond) + if err := _Atlas.contract.UnpackLog(event, "Bond", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBond is a log parse operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) ParseBond(log types.Log) (*AtlasBond, error) { + event := new(AtlasBond) + if err := _Atlas.contract.UnpackLog(event, "Bond", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the Atlas contract. +type AtlasBurnIterator struct { + Event *AtlasBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasBurn represents a Burn event raised by the Atlas contract. +type AtlasBurn struct { + From common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed from, uint256 amount) +func (_Atlas *AtlasFilterer) FilterBurn(opts *bind.FilterOpts, from []common.Address) (*AtlasBurnIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Burn", fromRule) + if err != nil { + return nil, err + } + return &AtlasBurnIterator{contract: _Atlas.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed from, uint256 amount) +func (_Atlas *AtlasFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *AtlasBurn, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Burn", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasBurn) + if err := _Atlas.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed from, uint256 amount) +func (_Atlas *AtlasFilterer) ParseBurn(log types.Log) (*AtlasBurn, error) { + event := new(AtlasBurn) + if err := _Atlas.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasDAppDisabledIterator is returned from FilterDAppDisabled and is used to iterate over the raw logs and unpacked data for DAppDisabled events raised by the Atlas contract. +type AtlasDAppDisabledIterator struct { + Event *AtlasDAppDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasDAppDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasDAppDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasDAppDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasDAppDisabled represents a DAppDisabled event raised by the Atlas contract. +type AtlasDAppDisabled struct { + Control common.Address + Governance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppDisabled is a free log retrieval operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterDAppDisabled(opts *bind.FilterOpts, control []common.Address, governance []common.Address) (*AtlasDAppDisabledIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return &AtlasDAppDisabledIterator{contract: _Atlas.contract, event: "DAppDisabled", logs: logs, sub: sub}, nil +} + +// WatchDAppDisabled is a free log subscription operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchDAppDisabled(opts *bind.WatchOpts, sink chan<- *AtlasDAppDisabled, control []common.Address, governance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasDAppDisabled) + if err := _Atlas.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppDisabled is a log parse operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseDAppDisabled(log types.Log) (*AtlasDAppDisabled, error) { + event := new(AtlasDAppDisabled) + if err := _Atlas.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasDAppGovernanceChangedIterator is returned from FilterDAppGovernanceChanged and is used to iterate over the raw logs and unpacked data for DAppGovernanceChanged events raised by the Atlas contract. +type AtlasDAppGovernanceChangedIterator struct { + Event *AtlasDAppGovernanceChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasDAppGovernanceChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasDAppGovernanceChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasDAppGovernanceChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasDAppGovernanceChanged represents a DAppGovernanceChanged event raised by the Atlas contract. +type AtlasDAppGovernanceChanged struct { + Control common.Address + OldGovernance common.Address + NewGovernance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppGovernanceChanged is a free log retrieval operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterDAppGovernanceChanged(opts *bind.FilterOpts, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (*AtlasDAppGovernanceChangedIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasDAppGovernanceChangedIterator{contract: _Atlas.contract, event: "DAppGovernanceChanged", logs: logs, sub: sub}, nil +} + +// WatchDAppGovernanceChanged is a free log subscription operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchDAppGovernanceChanged(opts *bind.WatchOpts, sink chan<- *AtlasDAppGovernanceChanged, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasDAppGovernanceChanged) + if err := _Atlas.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppGovernanceChanged is a log parse operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseDAppGovernanceChanged(log types.Log) (*AtlasDAppGovernanceChanged, error) { + event := new(AtlasDAppGovernanceChanged) + if err := _Atlas.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasExecutionEnvironmentCreatedIterator is returned from FilterExecutionEnvironmentCreated and is used to iterate over the raw logs and unpacked data for ExecutionEnvironmentCreated events raised by the Atlas contract. +type AtlasExecutionEnvironmentCreatedIterator struct { + Event *AtlasExecutionEnvironmentCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasExecutionEnvironmentCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasExecutionEnvironmentCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasExecutionEnvironmentCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasExecutionEnvironmentCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasExecutionEnvironmentCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasExecutionEnvironmentCreated represents a ExecutionEnvironmentCreated event raised by the Atlas contract. +type AtlasExecutionEnvironmentCreated struct { + User common.Address + ExecutionEnvironment common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutionEnvironmentCreated is a free log retrieval operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) FilterExecutionEnvironmentCreated(opts *bind.FilterOpts, user []common.Address, executionEnvironment []common.Address) (*AtlasExecutionEnvironmentCreatedIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var executionEnvironmentRule []interface{} + for _, executionEnvironmentItem := range executionEnvironment { + executionEnvironmentRule = append(executionEnvironmentRule, executionEnvironmentItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "ExecutionEnvironmentCreated", userRule, executionEnvironmentRule) + if err != nil { + return nil, err + } + return &AtlasExecutionEnvironmentCreatedIterator{contract: _Atlas.contract, event: "ExecutionEnvironmentCreated", logs: logs, sub: sub}, nil +} + +// WatchExecutionEnvironmentCreated is a free log subscription operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) WatchExecutionEnvironmentCreated(opts *bind.WatchOpts, sink chan<- *AtlasExecutionEnvironmentCreated, user []common.Address, executionEnvironment []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var executionEnvironmentRule []interface{} + for _, executionEnvironmentItem := range executionEnvironment { + executionEnvironmentRule = append(executionEnvironmentRule, executionEnvironmentItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "ExecutionEnvironmentCreated", userRule, executionEnvironmentRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasExecutionEnvironmentCreated) + if err := _Atlas.contract.UnpackLog(event, "ExecutionEnvironmentCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutionEnvironmentCreated is a log parse operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) ParseExecutionEnvironmentCreated(log types.Log) (*AtlasExecutionEnvironmentCreated, error) { + event := new(AtlasExecutionEnvironmentCreated) + if err := _Atlas.contract.UnpackLog(event, "ExecutionEnvironmentCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasGovernanceTransferStartedIterator is returned from FilterGovernanceTransferStarted and is used to iterate over the raw logs and unpacked data for GovernanceTransferStarted events raised by the Atlas contract. +type AtlasGovernanceTransferStartedIterator struct { + Event *AtlasGovernanceTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasGovernanceTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasGovernanceTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasGovernanceTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasGovernanceTransferStarted represents a GovernanceTransferStarted event raised by the Atlas contract. +type AtlasGovernanceTransferStarted struct { + PreviousGovernance common.Address + NewGovernance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGovernanceTransferStarted is a free log retrieval operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) FilterGovernanceTransferStarted(opts *bind.FilterOpts, previousGovernance []common.Address, newGovernance []common.Address) (*AtlasGovernanceTransferStartedIterator, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "GovernanceTransferStarted", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasGovernanceTransferStartedIterator{contract: _Atlas.contract, event: "GovernanceTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchGovernanceTransferStarted is a free log subscription operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) WatchGovernanceTransferStarted(opts *bind.WatchOpts, sink chan<- *AtlasGovernanceTransferStarted, previousGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "GovernanceTransferStarted", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasGovernanceTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGovernanceTransferStarted is a log parse operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) ParseGovernanceTransferStarted(log types.Log) (*AtlasGovernanceTransferStarted, error) { + event := new(AtlasGovernanceTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasGovernanceTransferredIterator is returned from FilterGovernanceTransferred and is used to iterate over the raw logs and unpacked data for GovernanceTransferred events raised by the Atlas contract. +type AtlasGovernanceTransferredIterator struct { + Event *AtlasGovernanceTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasGovernanceTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasGovernanceTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasGovernanceTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasGovernanceTransferred represents a GovernanceTransferred event raised by the Atlas contract. +type AtlasGovernanceTransferred struct { + PreviousGovernance common.Address + NewGovernance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGovernanceTransferred is a free log retrieval operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) FilterGovernanceTransferred(opts *bind.FilterOpts, previousGovernance []common.Address, newGovernance []common.Address) (*AtlasGovernanceTransferredIterator, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "GovernanceTransferred", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasGovernanceTransferredIterator{contract: _Atlas.contract, event: "GovernanceTransferred", logs: logs, sub: sub}, nil +} + +// WatchGovernanceTransferred is a free log subscription operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) WatchGovernanceTransferred(opts *bind.WatchOpts, sink chan<- *AtlasGovernanceTransferred, previousGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "GovernanceTransferred", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasGovernanceTransferred) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGovernanceTransferred is a log parse operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) ParseGovernanceTransferred(log types.Log) (*AtlasGovernanceTransferred, error) { + event := new(AtlasGovernanceTransferred) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasMetacallResultIterator is returned from FilterMetacallResult and is used to iterate over the raw logs and unpacked data for MetacallResult events raised by the Atlas contract. +type AtlasMetacallResultIterator struct { + Event *AtlasMetacallResult // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasMetacallResultIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasMetacallResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasMetacallResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasMetacallResultIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasMetacallResultIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasMetacallResult represents a MetacallResult event raised by the Atlas contract. +type AtlasMetacallResult struct { + Bundler common.Address + User common.Address + SolverSuccessful bool + DisbursementSuccessful bool + EthPaidToBundler *big.Int + NetGasSurcharge *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMetacallResult is a free log retrieval operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) FilterMetacallResult(opts *bind.FilterOpts, bundler []common.Address, user []common.Address) (*AtlasMetacallResultIterator, error) { + + var bundlerRule []interface{} + for _, bundlerItem := range bundler { + bundlerRule = append(bundlerRule, bundlerItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "MetacallResult", bundlerRule, userRule) + if err != nil { + return nil, err + } + return &AtlasMetacallResultIterator{contract: _Atlas.contract, event: "MetacallResult", logs: logs, sub: sub}, nil +} + +// WatchMetacallResult is a free log subscription operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) WatchMetacallResult(opts *bind.WatchOpts, sink chan<- *AtlasMetacallResult, bundler []common.Address, user []common.Address) (event.Subscription, error) { + + var bundlerRule []interface{} + for _, bundlerItem := range bundler { + bundlerRule = append(bundlerRule, bundlerItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "MetacallResult", bundlerRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasMetacallResult) + if err := _Atlas.contract.UnpackLog(event, "MetacallResult", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMetacallResult is a log parse operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) ParseMetacallResult(log types.Log) (*AtlasMetacallResult, error) { + event := new(AtlasMetacallResult) + if err := _Atlas.contract.UnpackLog(event, "MetacallResult", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the Atlas contract. +type AtlasMintIterator struct { + Event *AtlasMint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasMintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasMint represents a Mint event raised by the Atlas contract. +type AtlasMint struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. +// +// Solidity: event Mint(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) FilterMint(opts *bind.FilterOpts, to []common.Address) (*AtlasMintIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Mint", toRule) + if err != nil { + return nil, err + } + return &AtlasMintIterator{contract: _Atlas.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. +// +// Solidity: event Mint(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *AtlasMint, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Mint", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasMint) + if err := _Atlas.contract.UnpackLog(event, "Mint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMint is a log parse operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. +// +// Solidity: event Mint(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) ParseMint(log types.Log) (*AtlasMint, error) { + event := new(AtlasMint) + if err := _Atlas.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasNewDAppSignatoryIterator is returned from FilterNewDAppSignatory and is used to iterate over the raw logs and unpacked data for NewDAppSignatory events raised by the Atlas contract. +type AtlasNewDAppSignatoryIterator struct { + Event *AtlasNewDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasNewDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasNewDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasNewDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasNewDAppSignatory represents a NewDAppSignatory event raised by the Atlas contract. +type AtlasNewDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDAppSignatory is a free log retrieval operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterNewDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasNewDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasNewDAppSignatoryIterator{contract: _Atlas.contract, event: "NewDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchNewDAppSignatory is a free log subscription operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchNewDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasNewDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasNewDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewDAppSignatory is a log parse operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseNewDAppSignatory(log types.Log) (*AtlasNewDAppSignatory, error) { + event := new(AtlasNewDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasRedeemIterator is returned from FilterRedeem and is used to iterate over the raw logs and unpacked data for Redeem events raised by the Atlas contract. +type AtlasRedeemIterator struct { + Event *AtlasRedeem // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasRedeemIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasRedeem) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasRedeem) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasRedeemIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasRedeemIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasRedeem represents a Redeem event raised by the Atlas contract. +type AtlasRedeem struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRedeem is a free log retrieval operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) FilterRedeem(opts *bind.FilterOpts, owner []common.Address) (*AtlasRedeemIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Redeem", ownerRule) + if err != nil { + return nil, err + } + return &AtlasRedeemIterator{contract: _Atlas.contract, event: "Redeem", logs: logs, sub: sub}, nil +} + +// WatchRedeem is a free log subscription operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) WatchRedeem(opts *bind.WatchOpts, sink chan<- *AtlasRedeem, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Redeem", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasRedeem) + if err := _Atlas.contract.UnpackLog(event, "Redeem", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRedeem is a log parse operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) ParseRedeem(log types.Log) (*AtlasRedeem, error) { + event := new(AtlasRedeem) + if err := _Atlas.contract.UnpackLog(event, "Redeem", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasRemovedDAppSignatoryIterator is returned from FilterRemovedDAppSignatory and is used to iterate over the raw logs and unpacked data for RemovedDAppSignatory events raised by the Atlas contract. +type AtlasRemovedDAppSignatoryIterator struct { + Event *AtlasRemovedDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasRemovedDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasRemovedDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasRemovedDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasRemovedDAppSignatory represents a RemovedDAppSignatory event raised by the Atlas contract. +type AtlasRemovedDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRemovedDAppSignatory is a free log retrieval operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterRemovedDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasRemovedDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasRemovedDAppSignatoryIterator{contract: _Atlas.contract, event: "RemovedDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchRemovedDAppSignatory is a free log subscription operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchRemovedDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasRemovedDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasRemovedDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRemovedDAppSignatory is a log parse operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseRemovedDAppSignatory(log types.Log) (*AtlasRemovedDAppSignatory, error) { + event := new(AtlasRemovedDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSolverTxResultIterator is returned from FilterSolverTxResult and is used to iterate over the raw logs and unpacked data for SolverTxResult events raised by the Atlas contract. +type AtlasSolverTxResultIterator struct { + Event *AtlasSolverTxResult // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSolverTxResultIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSolverTxResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSolverTxResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSolverTxResultIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSolverTxResultIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSolverTxResult represents a SolverTxResult event raised by the Atlas contract. +type AtlasSolverTxResult struct { + SolverTo common.Address + SolverFrom common.Address + DAppControl common.Address + BidToken common.Address + BidAmount *big.Int + Executed bool + Success bool + Result *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSolverTxResult is a free log retrieval operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) FilterSolverTxResult(opts *bind.FilterOpts, solverTo []common.Address, solverFrom []common.Address, dAppControl []common.Address) (*AtlasSolverTxResultIterator, error) { + + var solverToRule []interface{} + for _, solverToItem := range solverTo { + solverToRule = append(solverToRule, solverToItem) + } + var solverFromRule []interface{} + for _, solverFromItem := range solverFrom { + solverFromRule = append(solverFromRule, solverFromItem) + } + var dAppControlRule []interface{} + for _, dAppControlItem := range dAppControl { + dAppControlRule = append(dAppControlRule, dAppControlItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SolverTxResult", solverToRule, solverFromRule, dAppControlRule) + if err != nil { + return nil, err + } + return &AtlasSolverTxResultIterator{contract: _Atlas.contract, event: "SolverTxResult", logs: logs, sub: sub}, nil +} + +// WatchSolverTxResult is a free log subscription operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) WatchSolverTxResult(opts *bind.WatchOpts, sink chan<- *AtlasSolverTxResult, solverTo []common.Address, solverFrom []common.Address, dAppControl []common.Address) (event.Subscription, error) { + + var solverToRule []interface{} + for _, solverToItem := range solverTo { + solverToRule = append(solverToRule, solverToItem) + } + var solverFromRule []interface{} + for _, solverFromItem := range solverFrom { + solverFromRule = append(solverFromRule, solverFromItem) + } + var dAppControlRule []interface{} + for _, dAppControlItem := range dAppControl { + dAppControlRule = append(dAppControlRule, dAppControlItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SolverTxResult", solverToRule, solverFromRule, dAppControlRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSolverTxResult) + if err := _Atlas.contract.UnpackLog(event, "SolverTxResult", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSolverTxResult is a log parse operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) ParseSolverTxResult(log types.Log) (*AtlasSolverTxResult, error) { + event := new(AtlasSolverTxResult) + if err := _Atlas.contract.UnpackLog(event, "SolverTxResult", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeRecipientTransferStartedIterator is returned from FilterSurchargeRecipientTransferStarted and is used to iterate over the raw logs and unpacked data for SurchargeRecipientTransferStarted events raised by the Atlas contract. +type AtlasSurchargeRecipientTransferStartedIterator struct { + Event *AtlasSurchargeRecipientTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeRecipientTransferStarted represents a SurchargeRecipientTransferStarted event raised by the Atlas contract. +type AtlasSurchargeRecipientTransferStarted struct { + CurrentRecipient common.Address + NewRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeRecipientTransferStarted is a free log retrieval operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address indexed currentRecipient, address indexed newRecipient) +func (_Atlas *AtlasFilterer) FilterSurchargeRecipientTransferStarted(opts *bind.FilterOpts, currentRecipient []common.Address, newRecipient []common.Address) (*AtlasSurchargeRecipientTransferStartedIterator, error) { + + var currentRecipientRule []interface{} + for _, currentRecipientItem := range currentRecipient { + currentRecipientRule = append(currentRecipientRule, currentRecipientItem) + } + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeRecipientTransferStarted", currentRecipientRule, newRecipientRule) + if err != nil { + return nil, err + } + return &AtlasSurchargeRecipientTransferStartedIterator{contract: _Atlas.contract, event: "SurchargeRecipientTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchSurchargeRecipientTransferStarted is a free log subscription operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address indexed currentRecipient, address indexed newRecipient) +func (_Atlas *AtlasFilterer) WatchSurchargeRecipientTransferStarted(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeRecipientTransferStarted, currentRecipient []common.Address, newRecipient []common.Address) (event.Subscription, error) { + + var currentRecipientRule []interface{} + for _, currentRecipientItem := range currentRecipient { + currentRecipientRule = append(currentRecipientRule, currentRecipientItem) + } + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeRecipientTransferStarted", currentRecipientRule, newRecipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeRecipientTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeRecipientTransferStarted is a log parse operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address indexed currentRecipient, address indexed newRecipient) +func (_Atlas *AtlasFilterer) ParseSurchargeRecipientTransferStarted(log types.Log) (*AtlasSurchargeRecipientTransferStarted, error) { + event := new(AtlasSurchargeRecipientTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeRecipientTransferredIterator is returned from FilterSurchargeRecipientTransferred and is used to iterate over the raw logs and unpacked data for SurchargeRecipientTransferred events raised by the Atlas contract. +type AtlasSurchargeRecipientTransferredIterator struct { + Event *AtlasSurchargeRecipientTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeRecipientTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeRecipientTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeRecipientTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeRecipientTransferred represents a SurchargeRecipientTransferred event raised by the Atlas contract. +type AtlasSurchargeRecipientTransferred struct { + NewRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeRecipientTransferred is a free log retrieval operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address indexed newRecipient) +func (_Atlas *AtlasFilterer) FilterSurchargeRecipientTransferred(opts *bind.FilterOpts, newRecipient []common.Address) (*AtlasSurchargeRecipientTransferredIterator, error) { + + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeRecipientTransferred", newRecipientRule) + if err != nil { + return nil, err + } + return &AtlasSurchargeRecipientTransferredIterator{contract: _Atlas.contract, event: "SurchargeRecipientTransferred", logs: logs, sub: sub}, nil +} + +// WatchSurchargeRecipientTransferred is a free log subscription operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address indexed newRecipient) +func (_Atlas *AtlasFilterer) WatchSurchargeRecipientTransferred(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeRecipientTransferred, newRecipient []common.Address) (event.Subscription, error) { + + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeRecipientTransferred", newRecipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeRecipientTransferred) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeRecipientTransferred is a log parse operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address indexed newRecipient) +func (_Atlas *AtlasFilterer) ParseSurchargeRecipientTransferred(log types.Log) (*AtlasSurchargeRecipientTransferred, error) { + event := new(AtlasSurchargeRecipientTransferred) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeWithdrawnIterator is returned from FilterSurchargeWithdrawn and is used to iterate over the raw logs and unpacked data for SurchargeWithdrawn events raised by the Atlas contract. +type AtlasSurchargeWithdrawnIterator struct { + Event *AtlasSurchargeWithdrawn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeWithdrawnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeWithdrawn represents a SurchargeWithdrawn event raised by the Atlas contract. +type AtlasSurchargeWithdrawn struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeWithdrawn is a free log retrieval operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) FilterSurchargeWithdrawn(opts *bind.FilterOpts, to []common.Address) (*AtlasSurchargeWithdrawnIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeWithdrawn", toRule) + if err != nil { + return nil, err + } + return &AtlasSurchargeWithdrawnIterator{contract: _Atlas.contract, event: "SurchargeWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchSurchargeWithdrawn is a free log subscription operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) WatchSurchargeWithdrawn(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeWithdrawn, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeWithdrawn", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeWithdrawn) + if err := _Atlas.contract.UnpackLog(event, "SurchargeWithdrawn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeWithdrawn is a log parse operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) ParseSurchargeWithdrawn(log types.Log) (*AtlasSurchargeWithdrawn, error) { + event := new(AtlasSurchargeWithdrawn) + if err := _Atlas.contract.UnpackLog(event, "SurchargeWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasUnbondIterator is returned from FilterUnbond and is used to iterate over the raw logs and unpacked data for Unbond events raised by the Atlas contract. +type AtlasUnbondIterator struct { + Event *AtlasUnbond // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasUnbondIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasUnbond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasUnbond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasUnbondIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasUnbondIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasUnbond represents a Unbond event raised by the Atlas contract. +type AtlasUnbond struct { + Owner common.Address + Amount *big.Int + EarliestAvailable *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnbond is a free log retrieval operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) FilterUnbond(opts *bind.FilterOpts, owner []common.Address) (*AtlasUnbondIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Unbond", ownerRule) + if err != nil { + return nil, err + } + return &AtlasUnbondIterator{contract: _Atlas.contract, event: "Unbond", logs: logs, sub: sub}, nil +} + +// WatchUnbond is a free log subscription operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) WatchUnbond(opts *bind.WatchOpts, sink chan<- *AtlasUnbond, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Unbond", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasUnbond) + if err := _Atlas.contract.UnpackLog(event, "Unbond", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnbond is a log parse operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) ParseUnbond(log types.Log) (*AtlasUnbond, error) { + event := new(AtlasUnbond) + if err := _Atlas.contract.UnpackLog(event, "Unbond", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/atlasverification/abi.json b/contract/atlasverification/1.0.0/abi.json similarity index 100% rename from contract/atlasverification/abi.json rename to contract/atlasverification/1.0.0/abi.json diff --git a/contract/atlasverification/atlasverification.go b/contract/atlasverification/1.0.0/atlasverification.go similarity index 99% rename from contract/atlasverification/atlasverification.go rename to contract/atlasverification/1.0.0/atlasverification.go index 436e328..e1b7ffd 100644 --- a/contract/atlasverification/atlasverification.go +++ b/contract/atlasverification/1.0.0/atlasverification.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlasverification +package atlasverification_1_0_0 import ( "errors" diff --git a/contract/atlasverification/1.0.1/abi.json b/contract/atlasverification/1.0.1/abi.json new file mode 100644 index 0000000..12787a6 --- /dev/null +++ b/contract/atlasverification/1.0.1/abi.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"atlas","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AtlasLockActive","type":"error"},{"inputs":[],"name":"DAppNotEnabled","type":"error"},{"inputs":[],"name":"InvalidCaller","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"InvalidSignatory","type":"error"},{"inputs":[],"name":"OnlyGovernance","type":"error"},{"inputs":[],"name":"SignatoryActive","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"oldGovernance","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"DAppGovernanceChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"NewDAppSignatory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"control","type":"address"},{"indexed":true,"internalType":"address","name":"governance","type":"address"},{"indexed":true,"internalType":"address","name":"signatory","type":"address"},{"indexed":false,"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"RemovedDAppSignatory","type":"event"},{"inputs":[],"name":"ATLAS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"signatory","type":"address"}],"name":"addSignatory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oldGovernance","type":"address"},{"internalType":"address","name":"newGovernance","type":"address"}],"name":"changeDAppGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dAppSequentialNonceTrackers","outputs":[{"internalType":"uint256","name":"lastUsedSeqNonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"}],"name":"dAppSignatories","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"}],"name":"disableDApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dApp","type":"address"}],"name":"getDAppNextNonce","outputs":[{"internalType":"uint256","name":"nextNonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"getDAppOperationPayload","outputs":[{"internalType":"bytes32","name":"payload","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"}],"name":"getGovFromControl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation","name":"solverOp","type":"tuple"}],"name":"getSolverPayload","outputs":[{"internalType":"bytes32","name":"payload","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"refNonce","type":"uint256"}],"name":"getUserNextNonSeqNonceAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"sequential","type":"bool"}],"name":"getUserNextNonce","outputs":[{"internalType":"uint256","name":"nextNonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"}],"name":"getUserOperationHash","outputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"}],"name":"getUserOperationPayload","outputs":[{"internalType":"bytes32","name":"payload","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"}],"name":"initializeGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"signatory","type":"address"}],"name":"isDAppSignatory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"signatory","type":"address"}],"name":"removeSignatory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"signatories","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint248","name":"wordIndex","type":"uint248"}],"name":"userNonSequentialNonceTrackers","outputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"userSequentialNonceTrackers","outputs":[{"internalType":"uint256","name":"lastUsedSeqNonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint32","name":"solverGasLimit","type":"uint32"}],"internalType":"struct DAppConfig","name":"dConfig","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bool","name":"isSimulation","type":"bool"}],"name":"validateCalls","outputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"callConfig","type":"uint32"}],"name":"verifyCallConfig","outputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation","name":"solverOp","type":"tuple"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"userMaxFeePerGas","type":"uint256"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bool","name":"allowsTrustedOpHash","type":"bool"}],"name":"verifySolverOp","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/contract/atlasverification/1.0.1/atlasverification.go b/contract/atlasverification/1.0.1/atlasverification.go new file mode 100644 index 0000000..ca3d39b --- /dev/null +++ b/contract/atlasverification/1.0.1/atlasverification.go @@ -0,0 +1,1765 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package atlasverification_1_0_1 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DAppConfig is an auto generated low-level Go binding around an user-defined struct. +type DAppConfig struct { + To common.Address + CallConfig uint32 + BidToken common.Address + SolverGasLimit uint32 +} + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// AtlasVerificationMetaData contains all meta data concerning the AtlasVerification contract. +var AtlasVerificationMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"atlas\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AtlasLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DAppNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyGovernance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"DAppGovernanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"NewDAppSignatory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"RemovedDAppSignatory\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ATLAS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"}],\"name\":\"addSignatory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"changeDAppGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"dAppSequentialNonceTrackers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastUsedSeqNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"dAppSignatories\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"disableDApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dApp\",\"type\":\"address\"}],\"name\":\"getDAppNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nextNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"getDAppOperationPayload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"payload\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"getGovFromControl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation\",\"name\":\"solverOp\",\"type\":\"tuple\"}],\"name\":\"getSolverPayload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"payload\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"refNonce\",\"type\":\"uint256\"}],\"name\":\"getUserNextNonSeqNonceAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"sequential\",\"type\":\"bool\"}],\"name\":\"getUserNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nextNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOperationHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOperationPayload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"payload\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"}],\"name\":\"initializeGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"}],\"name\":\"isDAppSignatory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"}],\"name\":\"removeSignatory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"signatories\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint248\",\"name\":\"wordIndex\",\"type\":\"uint248\"}],\"name\":\"userNonSequentialNonceTrackers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"userSequentialNonceTrackers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastUsedSeqNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"solverGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structDAppConfig\",\"name\":\"dConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isSimulation\",\"type\":\"bool\"}],\"name\":\"validateCalls\",\"outputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"}],\"name\":\"verifyCallConfig\",\"outputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation\",\"name\":\"solverOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"userMaxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowsTrustedOpHash\",\"type\":\"bool\"}],\"name\":\"verifySolverOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// AtlasVerificationABI is the input ABI used to generate the binding from. +// Deprecated: Use AtlasVerificationMetaData.ABI instead. +var AtlasVerificationABI = AtlasVerificationMetaData.ABI + +// AtlasVerification is an auto generated Go binding around an Ethereum contract. +type AtlasVerification struct { + AtlasVerificationCaller // Read-only binding to the contract + AtlasVerificationTransactor // Write-only binding to the contract + AtlasVerificationFilterer // Log filterer for contract events +} + +// AtlasVerificationCaller is an auto generated read-only Go binding around an Ethereum contract. +type AtlasVerificationCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AtlasVerificationTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AtlasVerificationFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AtlasVerificationSession struct { + Contract *AtlasVerification // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasVerificationCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AtlasVerificationCallerSession struct { + Contract *AtlasVerificationCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AtlasVerificationTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AtlasVerificationTransactorSession struct { + Contract *AtlasVerificationTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasVerificationRaw is an auto generated low-level Go binding around an Ethereum contract. +type AtlasVerificationRaw struct { + Contract *AtlasVerification // Generic contract binding to access the raw methods on +} + +// AtlasVerificationCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AtlasVerificationCallerRaw struct { + Contract *AtlasVerificationCaller // Generic read-only contract binding to access the raw methods on +} + +// AtlasVerificationTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AtlasVerificationTransactorRaw struct { + Contract *AtlasVerificationTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAtlasVerification creates a new instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerification(address common.Address, backend bind.ContractBackend) (*AtlasVerification, error) { + contract, err := bindAtlasVerification(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AtlasVerification{AtlasVerificationCaller: AtlasVerificationCaller{contract: contract}, AtlasVerificationTransactor: AtlasVerificationTransactor{contract: contract}, AtlasVerificationFilterer: AtlasVerificationFilterer{contract: contract}}, nil +} + +// NewAtlasVerificationCaller creates a new read-only instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationCaller(address common.Address, caller bind.ContractCaller) (*AtlasVerificationCaller, error) { + contract, err := bindAtlasVerification(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AtlasVerificationCaller{contract: contract}, nil +} + +// NewAtlasVerificationTransactor creates a new write-only instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationTransactor(address common.Address, transactor bind.ContractTransactor) (*AtlasVerificationTransactor, error) { + contract, err := bindAtlasVerification(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AtlasVerificationTransactor{contract: contract}, nil +} + +// NewAtlasVerificationFilterer creates a new log filterer instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationFilterer(address common.Address, filterer bind.ContractFilterer) (*AtlasVerificationFilterer, error) { + contract, err := bindAtlasVerification(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AtlasVerificationFilterer{contract: contract}, nil +} + +// bindAtlasVerification binds a generic wrapper to an already deployed contract. +func bindAtlasVerification(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AtlasVerificationABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AtlasVerification *AtlasVerificationRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AtlasVerification.Contract.AtlasVerificationCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AtlasVerification *AtlasVerificationRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AtlasVerification.Contract.AtlasVerificationTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AtlasVerification *AtlasVerificationRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AtlasVerification.Contract.AtlasVerificationTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AtlasVerification *AtlasVerificationCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AtlasVerification.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AtlasVerification *AtlasVerificationTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AtlasVerification.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AtlasVerification *AtlasVerificationTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AtlasVerification.Contract.contract.Transact(opts, method, params...) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationCaller) ATLAS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "ATLAS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationSession) ATLAS() (common.Address, error) { + return _AtlasVerification.Contract.ATLAS(&_AtlasVerification.CallOpts) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationCallerSession) ATLAS() (common.Address, error) { + return _AtlasVerification.Contract.ATLAS(&_AtlasVerification.CallOpts) +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCaller) DAppSequentialNonceTrackers(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "dAppSequentialNonceTrackers", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationSession) DAppSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.DAppSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) DAppSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.DAppSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationCaller) DAppSignatories(opts *bind.CallOpts, control common.Address) ([]common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "dAppSignatories", control) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationSession) DAppSignatories(control common.Address) ([]common.Address, error) { + return _AtlasVerification.Contract.DAppSignatories(&_AtlasVerification.CallOpts, control) +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationCallerSession) DAppSignatories(control common.Address) ([]common.Address, error) { + return _AtlasVerification.Contract.DAppSignatories(&_AtlasVerification.CallOpts, control) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationCaller) Eip712Domain(opts *bind.CallOpts) (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "eip712Domain") + + outstruct := new(struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Fields = *abi.ConvertType(out[0], new([1]byte)).(*[1]byte) + outstruct.Name = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Version = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.ChainId = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.VerifyingContract = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + outstruct.Salt = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) + outstruct.Extensions = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _AtlasVerification.Contract.Eip712Domain(&_AtlasVerification.CallOpts) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationCallerSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _AtlasVerification.Contract.Eip712Domain(&_AtlasVerification.CallOpts) +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCaller) GetDAppNextNonce(opts *bind.CallOpts, dApp common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDAppNextNonce", dApp) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationSession) GetDAppNextNonce(dApp common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.GetDAppNextNonce(&_AtlasVerification.CallOpts, dApp) +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDAppNextNonce(dApp common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.GetDAppNextNonce(&_AtlasVerification.CallOpts, dApp) +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetDAppOperationPayload(opts *bind.CallOpts, dAppOp DAppOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDAppOperationPayload", dAppOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetDAppOperationPayload(dAppOp DAppOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetDAppOperationPayload(&_AtlasVerification.CallOpts, dAppOp) +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDAppOperationPayload(dAppOp DAppOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetDAppOperationPayload(&_AtlasVerification.CallOpts, dAppOp) +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationCaller) GetDomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDomainSeparator") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationSession) GetDomainSeparator() ([32]byte, error) { + return _AtlasVerification.Contract.GetDomainSeparator(&_AtlasVerification.CallOpts) +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDomainSeparator() ([32]byte, error) { + return _AtlasVerification.Contract.GetDomainSeparator(&_AtlasVerification.CallOpts) +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationCaller) GetGovFromControl(opts *bind.CallOpts, control common.Address) (common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getGovFromControl", control) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationSession) GetGovFromControl(control common.Address) (common.Address, error) { + return _AtlasVerification.Contract.GetGovFromControl(&_AtlasVerification.CallOpts, control) +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationCallerSession) GetGovFromControl(control common.Address) (common.Address, error) { + return _AtlasVerification.Contract.GetGovFromControl(&_AtlasVerification.CallOpts, control) +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetSolverPayload(opts *bind.CallOpts, solverOp SolverOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getSolverPayload", solverOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetSolverPayload(solverOp SolverOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetSolverPayload(&_AtlasVerification.CallOpts, solverOp) +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetSolverPayload(solverOp SolverOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetSolverPayload(&_AtlasVerification.CallOpts, solverOp) +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationCaller) GetUserNextNonSeqNonceAfter(opts *bind.CallOpts, user common.Address, refNonce *big.Int) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserNextNonSeqNonceAfter", user, refNonce) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationSession) GetUserNextNonSeqNonceAfter(user common.Address, refNonce *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonSeqNonceAfter(&_AtlasVerification.CallOpts, user, refNonce) +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserNextNonSeqNonceAfter(user common.Address, refNonce *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonSeqNonceAfter(&_AtlasVerification.CallOpts, user, refNonce) +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCaller) GetUserNextNonce(opts *bind.CallOpts, user common.Address, sequential bool) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserNextNonce", user, sequential) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationSession) GetUserNextNonce(user common.Address, sequential bool) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonce(&_AtlasVerification.CallOpts, user, sequential) +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserNextNonce(user common.Address, sequential bool) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonce(&_AtlasVerification.CallOpts, user, sequential) +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationCaller) GetUserOperationHash(opts *bind.CallOpts, userOp UserOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserOperationHash", userOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationSession) GetUserOperationHash(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationHash(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserOperationHash(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationHash(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetUserOperationPayload(opts *bind.CallOpts, userOp UserOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserOperationPayload", userOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetUserOperationPayload(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationPayload(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserOperationPayload(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationPayload(&_AtlasVerification.CallOpts, userOp) +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationCaller) IsDAppSignatory(opts *bind.CallOpts, control common.Address, signatory common.Address) (bool, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "isDAppSignatory", control, signatory) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationSession) IsDAppSignatory(control common.Address, signatory common.Address) (bool, error) { + return _AtlasVerification.Contract.IsDAppSignatory(&_AtlasVerification.CallOpts, control, signatory) +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationCallerSession) IsDAppSignatory(control common.Address, signatory common.Address) (bool, error) { + return _AtlasVerification.Contract.IsDAppSignatory(&_AtlasVerification.CallOpts, control, signatory) +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationCaller) Signatories(opts *bind.CallOpts, key [32]byte) (bool, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "signatories", key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationSession) Signatories(key [32]byte) (bool, error) { + return _AtlasVerification.Contract.Signatories(&_AtlasVerification.CallOpts, key) +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationCallerSession) Signatories(key [32]byte) (bool, error) { + return _AtlasVerification.Contract.Signatories(&_AtlasVerification.CallOpts, key) +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationCaller) UserNonSequentialNonceTrackers(opts *bind.CallOpts, account common.Address, wordIndex *big.Int) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "userNonSequentialNonceTrackers", account, wordIndex) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationSession) UserNonSequentialNonceTrackers(account common.Address, wordIndex *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.UserNonSequentialNonceTrackers(&_AtlasVerification.CallOpts, account, wordIndex) +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationCallerSession) UserNonSequentialNonceTrackers(account common.Address, wordIndex *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.UserNonSequentialNonceTrackers(&_AtlasVerification.CallOpts, account, wordIndex) +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCaller) UserSequentialNonceTrackers(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "userSequentialNonceTrackers", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationSession) UserSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.UserSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) UserSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.UserSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationCaller) VerifyCallConfig(opts *bind.CallOpts, callConfig uint32) (uint8, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "verifyCallConfig", callConfig) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationSession) VerifyCallConfig(callConfig uint32) (uint8, error) { + return _AtlasVerification.Contract.VerifyCallConfig(&_AtlasVerification.CallOpts, callConfig) +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationCallerSession) VerifyCallConfig(callConfig uint32) (uint8, error) { + return _AtlasVerification.Contract.VerifyCallConfig(&_AtlasVerification.CallOpts, callConfig) +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationCaller) VerifySolverOp(opts *bind.CallOpts, solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "verifySolverOp", solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationSession) VerifySolverOp(solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + return _AtlasVerification.Contract.VerifySolverOp(&_AtlasVerification.CallOpts, solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationCallerSession) VerifySolverOp(solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + return _AtlasVerification.Contract.VerifySolverOp(&_AtlasVerification.CallOpts, solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactor) AddSignatory(opts *bind.TransactOpts, control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "addSignatory", control, signatory) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationSession) AddSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.AddSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) AddSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.AddSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationTransactor) ChangeDAppGovernance(opts *bind.TransactOpts, oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "changeDAppGovernance", oldGovernance, newGovernance) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationSession) ChangeDAppGovernance(oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.ChangeDAppGovernance(&_AtlasVerification.TransactOpts, oldGovernance, newGovernance) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) ChangeDAppGovernance(oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.ChangeDAppGovernance(&_AtlasVerification.TransactOpts, oldGovernance, newGovernance) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactor) DisableDApp(opts *bind.TransactOpts, control common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "disableDApp", control) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationSession) DisableDApp(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.DisableDApp(&_AtlasVerification.TransactOpts, control) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) DisableDApp(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.DisableDApp(&_AtlasVerification.TransactOpts, control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactor) InitializeGovernance(opts *bind.TransactOpts, control common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "initializeGovernance", control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationSession) InitializeGovernance(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.InitializeGovernance(&_AtlasVerification.TransactOpts, control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) InitializeGovernance(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.InitializeGovernance(&_AtlasVerification.TransactOpts, control) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactor) RemoveSignatory(opts *bind.TransactOpts, control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "removeSignatory", control, signatory) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationSession) RemoveSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.RemoveSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) RemoveSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.RemoveSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationTransactor) ValidateCalls(opts *bind.TransactOpts, dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "validateCalls", dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationSession) ValidateCalls(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.Contract.ValidateCalls(&_AtlasVerification.TransactOpts, dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationTransactorSession) ValidateCalls(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.Contract.ValidateCalls(&_AtlasVerification.TransactOpts, dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// AtlasVerificationDAppDisabledIterator is returned from FilterDAppDisabled and is used to iterate over the raw logs and unpacked data for DAppDisabled events raised by the AtlasVerification contract. +type AtlasVerificationDAppDisabledIterator struct { + Event *AtlasVerificationDAppDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationDAppDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationDAppDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationDAppDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationDAppDisabled represents a DAppDisabled event raised by the AtlasVerification contract. +type AtlasVerificationDAppDisabled struct { + Control common.Address + Governance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppDisabled is a free log retrieval operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterDAppDisabled(opts *bind.FilterOpts, control []common.Address, governance []common.Address) (*AtlasVerificationDAppDisabledIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return &AtlasVerificationDAppDisabledIterator{contract: _AtlasVerification.contract, event: "DAppDisabled", logs: logs, sub: sub}, nil +} + +// WatchDAppDisabled is a free log subscription operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchDAppDisabled(opts *bind.WatchOpts, sink chan<- *AtlasVerificationDAppDisabled, control []common.Address, governance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationDAppDisabled) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppDisabled is a log parse operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseDAppDisabled(log types.Log) (*AtlasVerificationDAppDisabled, error) { + event := new(AtlasVerificationDAppDisabled) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationDAppGovernanceChangedIterator is returned from FilterDAppGovernanceChanged and is used to iterate over the raw logs and unpacked data for DAppGovernanceChanged events raised by the AtlasVerification contract. +type AtlasVerificationDAppGovernanceChangedIterator struct { + Event *AtlasVerificationDAppGovernanceChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationDAppGovernanceChanged represents a DAppGovernanceChanged event raised by the AtlasVerification contract. +type AtlasVerificationDAppGovernanceChanged struct { + Control common.Address + OldGovernance common.Address + NewGovernance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppGovernanceChanged is a free log retrieval operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterDAppGovernanceChanged(opts *bind.FilterOpts, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (*AtlasVerificationDAppGovernanceChangedIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasVerificationDAppGovernanceChangedIterator{contract: _AtlasVerification.contract, event: "DAppGovernanceChanged", logs: logs, sub: sub}, nil +} + +// WatchDAppGovernanceChanged is a free log subscription operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchDAppGovernanceChanged(opts *bind.WatchOpts, sink chan<- *AtlasVerificationDAppGovernanceChanged, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationDAppGovernanceChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppGovernanceChanged is a log parse operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseDAppGovernanceChanged(log types.Log) (*AtlasVerificationDAppGovernanceChanged, error) { + event := new(AtlasVerificationDAppGovernanceChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationEIP712DomainChangedIterator is returned from FilterEIP712DomainChanged and is used to iterate over the raw logs and unpacked data for EIP712DomainChanged events raised by the AtlasVerification contract. +type AtlasVerificationEIP712DomainChangedIterator struct { + Event *AtlasVerificationEIP712DomainChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationEIP712DomainChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationEIP712DomainChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationEIP712DomainChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationEIP712DomainChanged represents a EIP712DomainChanged event raised by the AtlasVerification contract. +type AtlasVerificationEIP712DomainChanged struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEIP712DomainChanged is a free log retrieval operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) FilterEIP712DomainChanged(opts *bind.FilterOpts) (*AtlasVerificationEIP712DomainChangedIterator, error) { + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return &AtlasVerificationEIP712DomainChangedIterator{contract: _AtlasVerification.contract, event: "EIP712DomainChanged", logs: logs, sub: sub}, nil +} + +// WatchEIP712DomainChanged is a free log subscription operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) WatchEIP712DomainChanged(opts *bind.WatchOpts, sink chan<- *AtlasVerificationEIP712DomainChanged) (event.Subscription, error) { + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationEIP712DomainChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEIP712DomainChanged is a log parse operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) ParseEIP712DomainChanged(log types.Log) (*AtlasVerificationEIP712DomainChanged, error) { + event := new(AtlasVerificationEIP712DomainChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationNewDAppSignatoryIterator is returned from FilterNewDAppSignatory and is used to iterate over the raw logs and unpacked data for NewDAppSignatory events raised by the AtlasVerification contract. +type AtlasVerificationNewDAppSignatoryIterator struct { + Event *AtlasVerificationNewDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationNewDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationNewDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationNewDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationNewDAppSignatory represents a NewDAppSignatory event raised by the AtlasVerification contract. +type AtlasVerificationNewDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDAppSignatory is a free log retrieval operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterNewDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasVerificationNewDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasVerificationNewDAppSignatoryIterator{contract: _AtlasVerification.contract, event: "NewDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchNewDAppSignatory is a free log subscription operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchNewDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasVerificationNewDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationNewDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewDAppSignatory is a log parse operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseNewDAppSignatory(log types.Log) (*AtlasVerificationNewDAppSignatory, error) { + event := new(AtlasVerificationNewDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationRemovedDAppSignatoryIterator is returned from FilterRemovedDAppSignatory and is used to iterate over the raw logs and unpacked data for RemovedDAppSignatory events raised by the AtlasVerification contract. +type AtlasVerificationRemovedDAppSignatoryIterator struct { + Event *AtlasVerificationRemovedDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationRemovedDAppSignatory represents a RemovedDAppSignatory event raised by the AtlasVerification contract. +type AtlasVerificationRemovedDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRemovedDAppSignatory is a free log retrieval operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterRemovedDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasVerificationRemovedDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasVerificationRemovedDAppSignatoryIterator{contract: _AtlasVerification.contract, event: "RemovedDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchRemovedDAppSignatory is a free log subscription operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchRemovedDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasVerificationRemovedDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationRemovedDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRemovedDAppSignatory is a log parse operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseRemovedDAppSignatory(log types.Log) (*AtlasVerificationRemovedDAppSignatory, error) { + event := new(AtlasVerificationRemovedDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/atlasverification/1.1.0/abi.json b/contract/atlasverification/1.1.0/abi.json new file mode 100644 index 0000000..897351d --- /dev/null +++ b/contract/atlasverification/1.1.0/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[{"name":"atlas","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"ATLAS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"addSignatory","inputs":[{"name":"control","type":"address","internalType":"address"},{"name":"signatory","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeDAppGovernance","inputs":[{"name":"oldGovernance","type":"address","internalType":"address"},{"name":"newGovernance","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dAppSequentialNonceTrackers","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"lastUsedSeqNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"dAppSignatories","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"disableDApp","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getDAppNextNonce","inputs":[{"name":"dApp","type":"address","internalType":"address"}],"outputs":[{"name":"nextNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDAppOperationPayload","inputs":[{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"payload","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getDomainSeparator","inputs":[],"outputs":[{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getGovFromControl","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getSolverPayload","inputs":[{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"payload","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getUserNextNonSeqNonceAfter","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"refNonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserNextNonce","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"sequential","type":"bool","internalType":"bool"}],"outputs":[{"name":"nextNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserOperationHash","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"userOpHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getUserOperationPayload","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"payload","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeGovernance","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDAppSignatory","inputs":[{"name":"control","type":"address","internalType":"address"},{"name":"signatory","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeSignatory","inputs":[{"name":"control","type":"address","internalType":"address"},{"name":"signatory","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signatories","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"userNonSequentialNonceTrackers","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"wordIndex","type":"uint248","internalType":"uint248"}],"outputs":[{"name":"bitmap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"userSequentialNonceTrackers","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"lastUsedSeqNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validateCalls","inputs":[{"name":"dConfig","type":"tuple","internalType":"struct DAppConfig","components":[{"name":"to","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"solverGasLimit","type":"uint32","internalType":"uint32"}]},{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"isSimulation","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}],"stateMutability":"nonpayable"},{"type":"function","name":"verifyCallConfig","inputs":[{"name":"callConfig","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}],"stateMutability":"pure"},{"type":"function","name":"verifySolverOp","inputs":[{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"userMaxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"bundler","type":"address","internalType":"address"},{"name":"allowsTrustedOpHash","type":"bool","internalType":"bool"}],"outputs":[{"name":"result","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"DAppDisabled","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"DAppGovernanceChanged","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"oldGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"NewDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"RemovedDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"error","name":"AtlasLockActive","inputs":[]},{"type":"error","name":"DAppNotEnabled","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignatory","inputs":[]},{"type":"error","name":"OnlyGovernance","inputs":[]},{"type":"error","name":"SignatoryActive","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}] \ No newline at end of file diff --git a/contract/atlasverification/1.1.0/atlasverification.go b/contract/atlasverification/1.1.0/atlasverification.go new file mode 100644 index 0000000..9b4e118 --- /dev/null +++ b/contract/atlasverification/1.1.0/atlasverification.go @@ -0,0 +1,1765 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package atlasverification_1_1_0 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DAppConfig is an auto generated low-level Go binding around an user-defined struct. +type DAppConfig struct { + To common.Address + CallConfig uint32 + BidToken common.Address + SolverGasLimit uint32 +} + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// AtlasVerificationMetaData contains all meta data concerning the AtlasVerification contract. +var AtlasVerificationMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"atlas\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ATLAS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"changeDAppGovernance\",\"inputs\":[{\"name\":\"oldGovernance\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"dAppSequentialNonceTrackers\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"lastUsedSeqNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"dAppSignatories\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableDApp\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDAppNextNonce\",\"inputs\":[{\"name\":\"dApp\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nextNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDAppOperationPayload\",\"inputs\":[{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"payload\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDomainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"domainSeparator\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGovFromControl\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSolverPayload\",\"inputs\":[{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"payload\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserNextNonSeqNonceAfter\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"refNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserNextNonce\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sequential\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"nextNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserOperationHash\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserOperationPayload\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"payload\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeGovernance\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"signatories\",\"inputs\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userNonSequentialNonceTrackers\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wordIndex\",\"type\":\"uint248\",\"internalType\":\"uint248\"}],\"outputs\":[{\"name\":\"bitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userSequentialNonceTrackers\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"lastUsedSeqNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateCalls\",\"inputs\":[{\"name\":\"dConfig\",\"type\":\"tuple\",\"internalType\":\"structDAppConfig\",\"components\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCallConfig\",\"inputs\":[{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifySolverOp\",\"inputs\":[{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"userMaxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowsTrustedOpHash\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DAppDisabled\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DAppGovernanceChanged\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RemovedDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AtlasLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DAppNotEnabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatory\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyGovernance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatoryActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", +} + +// AtlasVerificationABI is the input ABI used to generate the binding from. +// Deprecated: Use AtlasVerificationMetaData.ABI instead. +var AtlasVerificationABI = AtlasVerificationMetaData.ABI + +// AtlasVerification is an auto generated Go binding around an Ethereum contract. +type AtlasVerification struct { + AtlasVerificationCaller // Read-only binding to the contract + AtlasVerificationTransactor // Write-only binding to the contract + AtlasVerificationFilterer // Log filterer for contract events +} + +// AtlasVerificationCaller is an auto generated read-only Go binding around an Ethereum contract. +type AtlasVerificationCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AtlasVerificationTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AtlasVerificationFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AtlasVerificationSession struct { + Contract *AtlasVerification // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasVerificationCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AtlasVerificationCallerSession struct { + Contract *AtlasVerificationCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AtlasVerificationTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AtlasVerificationTransactorSession struct { + Contract *AtlasVerificationTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasVerificationRaw is an auto generated low-level Go binding around an Ethereum contract. +type AtlasVerificationRaw struct { + Contract *AtlasVerification // Generic contract binding to access the raw methods on +} + +// AtlasVerificationCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AtlasVerificationCallerRaw struct { + Contract *AtlasVerificationCaller // Generic read-only contract binding to access the raw methods on +} + +// AtlasVerificationTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AtlasVerificationTransactorRaw struct { + Contract *AtlasVerificationTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAtlasVerification creates a new instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerification(address common.Address, backend bind.ContractBackend) (*AtlasVerification, error) { + contract, err := bindAtlasVerification(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AtlasVerification{AtlasVerificationCaller: AtlasVerificationCaller{contract: contract}, AtlasVerificationTransactor: AtlasVerificationTransactor{contract: contract}, AtlasVerificationFilterer: AtlasVerificationFilterer{contract: contract}}, nil +} + +// NewAtlasVerificationCaller creates a new read-only instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationCaller(address common.Address, caller bind.ContractCaller) (*AtlasVerificationCaller, error) { + contract, err := bindAtlasVerification(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AtlasVerificationCaller{contract: contract}, nil +} + +// NewAtlasVerificationTransactor creates a new write-only instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationTransactor(address common.Address, transactor bind.ContractTransactor) (*AtlasVerificationTransactor, error) { + contract, err := bindAtlasVerification(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AtlasVerificationTransactor{contract: contract}, nil +} + +// NewAtlasVerificationFilterer creates a new log filterer instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationFilterer(address common.Address, filterer bind.ContractFilterer) (*AtlasVerificationFilterer, error) { + contract, err := bindAtlasVerification(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AtlasVerificationFilterer{contract: contract}, nil +} + +// bindAtlasVerification binds a generic wrapper to an already deployed contract. +func bindAtlasVerification(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AtlasVerificationABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AtlasVerification *AtlasVerificationRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AtlasVerification.Contract.AtlasVerificationCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AtlasVerification *AtlasVerificationRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AtlasVerification.Contract.AtlasVerificationTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AtlasVerification *AtlasVerificationRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AtlasVerification.Contract.AtlasVerificationTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AtlasVerification *AtlasVerificationCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AtlasVerification.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AtlasVerification *AtlasVerificationTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AtlasVerification.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AtlasVerification *AtlasVerificationTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AtlasVerification.Contract.contract.Transact(opts, method, params...) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationCaller) ATLAS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "ATLAS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationSession) ATLAS() (common.Address, error) { + return _AtlasVerification.Contract.ATLAS(&_AtlasVerification.CallOpts) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationCallerSession) ATLAS() (common.Address, error) { + return _AtlasVerification.Contract.ATLAS(&_AtlasVerification.CallOpts) +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCaller) DAppSequentialNonceTrackers(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "dAppSequentialNonceTrackers", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationSession) DAppSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.DAppSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) DAppSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.DAppSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationCaller) DAppSignatories(opts *bind.CallOpts, control common.Address) ([]common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "dAppSignatories", control) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationSession) DAppSignatories(control common.Address) ([]common.Address, error) { + return _AtlasVerification.Contract.DAppSignatories(&_AtlasVerification.CallOpts, control) +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationCallerSession) DAppSignatories(control common.Address) ([]common.Address, error) { + return _AtlasVerification.Contract.DAppSignatories(&_AtlasVerification.CallOpts, control) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationCaller) Eip712Domain(opts *bind.CallOpts) (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "eip712Domain") + + outstruct := new(struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Fields = *abi.ConvertType(out[0], new([1]byte)).(*[1]byte) + outstruct.Name = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Version = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.ChainId = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.VerifyingContract = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + outstruct.Salt = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) + outstruct.Extensions = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _AtlasVerification.Contract.Eip712Domain(&_AtlasVerification.CallOpts) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationCallerSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _AtlasVerification.Contract.Eip712Domain(&_AtlasVerification.CallOpts) +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCaller) GetDAppNextNonce(opts *bind.CallOpts, dApp common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDAppNextNonce", dApp) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationSession) GetDAppNextNonce(dApp common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.GetDAppNextNonce(&_AtlasVerification.CallOpts, dApp) +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDAppNextNonce(dApp common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.GetDAppNextNonce(&_AtlasVerification.CallOpts, dApp) +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetDAppOperationPayload(opts *bind.CallOpts, dAppOp DAppOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDAppOperationPayload", dAppOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetDAppOperationPayload(dAppOp DAppOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetDAppOperationPayload(&_AtlasVerification.CallOpts, dAppOp) +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDAppOperationPayload(dAppOp DAppOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetDAppOperationPayload(&_AtlasVerification.CallOpts, dAppOp) +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationCaller) GetDomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDomainSeparator") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationSession) GetDomainSeparator() ([32]byte, error) { + return _AtlasVerification.Contract.GetDomainSeparator(&_AtlasVerification.CallOpts) +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDomainSeparator() ([32]byte, error) { + return _AtlasVerification.Contract.GetDomainSeparator(&_AtlasVerification.CallOpts) +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationCaller) GetGovFromControl(opts *bind.CallOpts, control common.Address) (common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getGovFromControl", control) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationSession) GetGovFromControl(control common.Address) (common.Address, error) { + return _AtlasVerification.Contract.GetGovFromControl(&_AtlasVerification.CallOpts, control) +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationCallerSession) GetGovFromControl(control common.Address) (common.Address, error) { + return _AtlasVerification.Contract.GetGovFromControl(&_AtlasVerification.CallOpts, control) +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetSolverPayload(opts *bind.CallOpts, solverOp SolverOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getSolverPayload", solverOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetSolverPayload(solverOp SolverOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetSolverPayload(&_AtlasVerification.CallOpts, solverOp) +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetSolverPayload(solverOp SolverOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetSolverPayload(&_AtlasVerification.CallOpts, solverOp) +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationCaller) GetUserNextNonSeqNonceAfter(opts *bind.CallOpts, user common.Address, refNonce *big.Int) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserNextNonSeqNonceAfter", user, refNonce) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationSession) GetUserNextNonSeqNonceAfter(user common.Address, refNonce *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonSeqNonceAfter(&_AtlasVerification.CallOpts, user, refNonce) +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserNextNonSeqNonceAfter(user common.Address, refNonce *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonSeqNonceAfter(&_AtlasVerification.CallOpts, user, refNonce) +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCaller) GetUserNextNonce(opts *bind.CallOpts, user common.Address, sequential bool) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserNextNonce", user, sequential) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationSession) GetUserNextNonce(user common.Address, sequential bool) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonce(&_AtlasVerification.CallOpts, user, sequential) +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserNextNonce(user common.Address, sequential bool) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonce(&_AtlasVerification.CallOpts, user, sequential) +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationCaller) GetUserOperationHash(opts *bind.CallOpts, userOp UserOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserOperationHash", userOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationSession) GetUserOperationHash(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationHash(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserOperationHash(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationHash(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetUserOperationPayload(opts *bind.CallOpts, userOp UserOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserOperationPayload", userOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetUserOperationPayload(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationPayload(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserOperationPayload(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationPayload(&_AtlasVerification.CallOpts, userOp) +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationCaller) IsDAppSignatory(opts *bind.CallOpts, control common.Address, signatory common.Address) (bool, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "isDAppSignatory", control, signatory) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationSession) IsDAppSignatory(control common.Address, signatory common.Address) (bool, error) { + return _AtlasVerification.Contract.IsDAppSignatory(&_AtlasVerification.CallOpts, control, signatory) +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationCallerSession) IsDAppSignatory(control common.Address, signatory common.Address) (bool, error) { + return _AtlasVerification.Contract.IsDAppSignatory(&_AtlasVerification.CallOpts, control, signatory) +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationCaller) Signatories(opts *bind.CallOpts, key [32]byte) (bool, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "signatories", key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationSession) Signatories(key [32]byte) (bool, error) { + return _AtlasVerification.Contract.Signatories(&_AtlasVerification.CallOpts, key) +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationCallerSession) Signatories(key [32]byte) (bool, error) { + return _AtlasVerification.Contract.Signatories(&_AtlasVerification.CallOpts, key) +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationCaller) UserNonSequentialNonceTrackers(opts *bind.CallOpts, account common.Address, wordIndex *big.Int) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "userNonSequentialNonceTrackers", account, wordIndex) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationSession) UserNonSequentialNonceTrackers(account common.Address, wordIndex *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.UserNonSequentialNonceTrackers(&_AtlasVerification.CallOpts, account, wordIndex) +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationCallerSession) UserNonSequentialNonceTrackers(account common.Address, wordIndex *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.UserNonSequentialNonceTrackers(&_AtlasVerification.CallOpts, account, wordIndex) +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCaller) UserSequentialNonceTrackers(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "userSequentialNonceTrackers", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationSession) UserSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.UserSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) UserSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.UserSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationCaller) VerifyCallConfig(opts *bind.CallOpts, callConfig uint32) (uint8, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "verifyCallConfig", callConfig) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationSession) VerifyCallConfig(callConfig uint32) (uint8, error) { + return _AtlasVerification.Contract.VerifyCallConfig(&_AtlasVerification.CallOpts, callConfig) +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationCallerSession) VerifyCallConfig(callConfig uint32) (uint8, error) { + return _AtlasVerification.Contract.VerifyCallConfig(&_AtlasVerification.CallOpts, callConfig) +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationCaller) VerifySolverOp(opts *bind.CallOpts, solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "verifySolverOp", solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationSession) VerifySolverOp(solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + return _AtlasVerification.Contract.VerifySolverOp(&_AtlasVerification.CallOpts, solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationCallerSession) VerifySolverOp(solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + return _AtlasVerification.Contract.VerifySolverOp(&_AtlasVerification.CallOpts, solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactor) AddSignatory(opts *bind.TransactOpts, control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "addSignatory", control, signatory) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationSession) AddSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.AddSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) AddSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.AddSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationTransactor) ChangeDAppGovernance(opts *bind.TransactOpts, oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "changeDAppGovernance", oldGovernance, newGovernance) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationSession) ChangeDAppGovernance(oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.ChangeDAppGovernance(&_AtlasVerification.TransactOpts, oldGovernance, newGovernance) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) ChangeDAppGovernance(oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.ChangeDAppGovernance(&_AtlasVerification.TransactOpts, oldGovernance, newGovernance) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactor) DisableDApp(opts *bind.TransactOpts, control common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "disableDApp", control) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationSession) DisableDApp(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.DisableDApp(&_AtlasVerification.TransactOpts, control) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) DisableDApp(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.DisableDApp(&_AtlasVerification.TransactOpts, control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactor) InitializeGovernance(opts *bind.TransactOpts, control common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "initializeGovernance", control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationSession) InitializeGovernance(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.InitializeGovernance(&_AtlasVerification.TransactOpts, control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) InitializeGovernance(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.InitializeGovernance(&_AtlasVerification.TransactOpts, control) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactor) RemoveSignatory(opts *bind.TransactOpts, control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "removeSignatory", control, signatory) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationSession) RemoveSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.RemoveSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) RemoveSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.RemoveSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationTransactor) ValidateCalls(opts *bind.TransactOpts, dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "validateCalls", dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationSession) ValidateCalls(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.Contract.ValidateCalls(&_AtlasVerification.TransactOpts, dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationTransactorSession) ValidateCalls(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.Contract.ValidateCalls(&_AtlasVerification.TransactOpts, dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// AtlasVerificationDAppDisabledIterator is returned from FilterDAppDisabled and is used to iterate over the raw logs and unpacked data for DAppDisabled events raised by the AtlasVerification contract. +type AtlasVerificationDAppDisabledIterator struct { + Event *AtlasVerificationDAppDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationDAppDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationDAppDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationDAppDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationDAppDisabled represents a DAppDisabled event raised by the AtlasVerification contract. +type AtlasVerificationDAppDisabled struct { + Control common.Address + Governance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppDisabled is a free log retrieval operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterDAppDisabled(opts *bind.FilterOpts, control []common.Address, governance []common.Address) (*AtlasVerificationDAppDisabledIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return &AtlasVerificationDAppDisabledIterator{contract: _AtlasVerification.contract, event: "DAppDisabled", logs: logs, sub: sub}, nil +} + +// WatchDAppDisabled is a free log subscription operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchDAppDisabled(opts *bind.WatchOpts, sink chan<- *AtlasVerificationDAppDisabled, control []common.Address, governance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationDAppDisabled) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppDisabled is a log parse operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseDAppDisabled(log types.Log) (*AtlasVerificationDAppDisabled, error) { + event := new(AtlasVerificationDAppDisabled) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationDAppGovernanceChangedIterator is returned from FilterDAppGovernanceChanged and is used to iterate over the raw logs and unpacked data for DAppGovernanceChanged events raised by the AtlasVerification contract. +type AtlasVerificationDAppGovernanceChangedIterator struct { + Event *AtlasVerificationDAppGovernanceChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationDAppGovernanceChanged represents a DAppGovernanceChanged event raised by the AtlasVerification contract. +type AtlasVerificationDAppGovernanceChanged struct { + Control common.Address + OldGovernance common.Address + NewGovernance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppGovernanceChanged is a free log retrieval operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterDAppGovernanceChanged(opts *bind.FilterOpts, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (*AtlasVerificationDAppGovernanceChangedIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasVerificationDAppGovernanceChangedIterator{contract: _AtlasVerification.contract, event: "DAppGovernanceChanged", logs: logs, sub: sub}, nil +} + +// WatchDAppGovernanceChanged is a free log subscription operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchDAppGovernanceChanged(opts *bind.WatchOpts, sink chan<- *AtlasVerificationDAppGovernanceChanged, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationDAppGovernanceChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppGovernanceChanged is a log parse operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseDAppGovernanceChanged(log types.Log) (*AtlasVerificationDAppGovernanceChanged, error) { + event := new(AtlasVerificationDAppGovernanceChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationEIP712DomainChangedIterator is returned from FilterEIP712DomainChanged and is used to iterate over the raw logs and unpacked data for EIP712DomainChanged events raised by the AtlasVerification contract. +type AtlasVerificationEIP712DomainChangedIterator struct { + Event *AtlasVerificationEIP712DomainChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationEIP712DomainChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationEIP712DomainChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationEIP712DomainChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationEIP712DomainChanged represents a EIP712DomainChanged event raised by the AtlasVerification contract. +type AtlasVerificationEIP712DomainChanged struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEIP712DomainChanged is a free log retrieval operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) FilterEIP712DomainChanged(opts *bind.FilterOpts) (*AtlasVerificationEIP712DomainChangedIterator, error) { + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return &AtlasVerificationEIP712DomainChangedIterator{contract: _AtlasVerification.contract, event: "EIP712DomainChanged", logs: logs, sub: sub}, nil +} + +// WatchEIP712DomainChanged is a free log subscription operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) WatchEIP712DomainChanged(opts *bind.WatchOpts, sink chan<- *AtlasVerificationEIP712DomainChanged) (event.Subscription, error) { + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationEIP712DomainChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEIP712DomainChanged is a log parse operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) ParseEIP712DomainChanged(log types.Log) (*AtlasVerificationEIP712DomainChanged, error) { + event := new(AtlasVerificationEIP712DomainChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationNewDAppSignatoryIterator is returned from FilterNewDAppSignatory and is used to iterate over the raw logs and unpacked data for NewDAppSignatory events raised by the AtlasVerification contract. +type AtlasVerificationNewDAppSignatoryIterator struct { + Event *AtlasVerificationNewDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationNewDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationNewDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationNewDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationNewDAppSignatory represents a NewDAppSignatory event raised by the AtlasVerification contract. +type AtlasVerificationNewDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDAppSignatory is a free log retrieval operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterNewDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasVerificationNewDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasVerificationNewDAppSignatoryIterator{contract: _AtlasVerification.contract, event: "NewDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchNewDAppSignatory is a free log subscription operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchNewDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasVerificationNewDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationNewDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewDAppSignatory is a log parse operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseNewDAppSignatory(log types.Log) (*AtlasVerificationNewDAppSignatory, error) { + event := new(AtlasVerificationNewDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationRemovedDAppSignatoryIterator is returned from FilterRemovedDAppSignatory and is used to iterate over the raw logs and unpacked data for RemovedDAppSignatory events raised by the AtlasVerification contract. +type AtlasVerificationRemovedDAppSignatoryIterator struct { + Event *AtlasVerificationRemovedDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationRemovedDAppSignatory represents a RemovedDAppSignatory event raised by the AtlasVerification contract. +type AtlasVerificationRemovedDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRemovedDAppSignatory is a free log retrieval operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterRemovedDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasVerificationRemovedDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasVerificationRemovedDAppSignatoryIterator{contract: _AtlasVerification.contract, event: "RemovedDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchRemovedDAppSignatory is a free log subscription operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchRemovedDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasVerificationRemovedDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationRemovedDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRemovedDAppSignatory is a log parse operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseRemovedDAppSignatory(log types.Log) (*AtlasVerificationRemovedDAppSignatory, error) { + event := new(AtlasVerificationRemovedDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/simulator/abi.json b/contract/simulator/1.0.0/abi.json similarity index 100% rename from contract/simulator/abi.json rename to contract/simulator/1.0.0/abi.json diff --git a/contract/simulator/simulator.go b/contract/simulator/1.0.0/simulator.go similarity index 99% rename from contract/simulator/simulator.go rename to contract/simulator/1.0.0/simulator.go index c41be72..030c0e8 100644 --- a/contract/simulator/simulator.go +++ b/contract/simulator/1.0.0/simulator.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package simulator +package simulator_1_0_0 import ( "errors" diff --git a/contract/simulator/1.0.1/abi.json b/contract/simulator/1.0.1/abi.json new file mode 100644 index 0000000..6391a75 --- /dev/null +++ b/contract/simulator/1.0.1/abi.json @@ -0,0 +1 @@ +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllocateValueDelegatecallFail","type":"error"},{"inputs":[],"name":"AllocateValueFail","type":"error"},{"inputs":[],"name":"AllocateValueSimFail","type":"error"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"AlteredControl","type":"error"},{"inputs":[],"name":"AtlasLockActive","type":"error"},{"inputs":[],"name":"BalanceNotReconciled","type":"error"},{"inputs":[{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidFindSuccessful","type":"error"},{"inputs":[],"name":"BidNotPaid","type":"error"},{"inputs":[{"internalType":"uint256","name":"indexInSolverOps","type":"uint256"},{"internalType":"uint256","name":"bidAmount","type":"uint256"}],"name":"BidTooHigh","type":"error"},{"inputs":[],"name":"BothPreOpsAndUserReturnDataCannotBeTracked","type":"error"},{"inputs":[],"name":"BothUserAndDAppNoncesCannotBeSequential","type":"error"},{"inputs":[],"name":"CallbackNotCalled","type":"error"},{"inputs":[],"name":"DAppNotEnabled","type":"error"},{"inputs":[],"name":"DoubleReconcile","type":"error"},{"inputs":[],"name":"EnvironmentMismatch","type":"error"},{"inputs":[],"name":"EscrowLockActive","type":"error"},{"inputs":[],"name":"ExecutionEnvironmentBalanceTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientAtlETHBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientAvailableBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBalanceForDeduction","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientBondedBalance","type":"error"},{"inputs":[],"name":"InsufficientEscrow","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientLocalFunds","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint256","name":"holds","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientSolverBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientSurchargeBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"shortfall","type":"uint256"}],"name":"InsufficientTotalBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientUnbondedBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientWithdrawableBalance","type":"error"},{"inputs":[],"name":"InvalidAccess","type":"error"},{"inputs":[],"name":"InvalidCaller","type":"error"},{"inputs":[],"name":"InvalidCodeHash","type":"error"},{"inputs":[],"name":"InvalidControl","type":"error"},{"inputs":[],"name":"InvalidDAppControl","type":"error"},{"inputs":[],"name":"InvalidEntry","type":"error"},{"inputs":[],"name":"InvalidEntryFunction","type":"error"},{"inputs":[],"name":"InvalidEnvironment","type":"error"},{"inputs":[],"name":"InvalidEscrowDuration","type":"error"},{"inputs":[{"internalType":"address","name":"correctEnvironment","type":"address"}],"name":"InvalidExecutionEnvironment","type":"error"},{"inputs":[],"name":"InvalidLockState","type":"error"},{"inputs":[],"name":"InvalidSignatory","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidSolver","type":"error"},{"inputs":[{"internalType":"address","name":"solverFrom","type":"address"}],"name":"InvalidSolverFrom","type":"error"},{"inputs":[],"name":"InvalidTo","type":"error"},{"inputs":[],"name":"InvalidUser","type":"error"},{"inputs":[],"name":"InvertBidValueCannotBeExPostBids","type":"error"},{"inputs":[],"name":"InvertedBidExceedsCeiling","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerBalancing","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"LedgerFinalized","type":"error"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"MissingFunds","type":"error"},{"inputs":[],"name":"MustBeDelegatecalled","type":"error"},{"inputs":[],"name":"NoAuctionWinner","type":"error"},{"inputs":[],"name":"NoDelegatecall","type":"error"},{"inputs":[],"name":"NoUnfilledRequests","type":"error"},{"inputs":[],"name":"NoUnusedNonceInBitmap","type":"error"},{"inputs":[],"name":"NotEnvironmentOwner","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[],"name":"NotInitialized","type":"error"},{"inputs":[],"name":"OnlyAtlas","type":"error"},{"inputs":[],"name":"OnlyGovernance","type":"error"},{"inputs":[],"name":"PermitDeadlineExpired","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PostOpsDelegatecallReturnedFalse","type":"error"},{"inputs":[],"name":"PostOpsFail","type":"error"},{"inputs":[],"name":"PostOpsSimFail","type":"error"},{"inputs":[],"name":"PostSolverFailed","type":"error"},{"inputs":[],"name":"PreOpsDelegatecallFail","type":"error"},{"inputs":[],"name":"PreOpsFail","type":"error"},{"inputs":[],"name":"PreOpsSimFail","type":"error"},{"inputs":[],"name":"PreSolverFailed","type":"error"},{"inputs":[],"name":"SignatoryActive","type":"error"},{"inputs":[],"name":"SimulationPassed","type":"error"},{"inputs":[],"name":"SimulatorBalanceTooLow","type":"error"},{"inputs":[],"name":"SolverMustReconcile","type":"error"},{"inputs":[],"name":"SolverOpReverted","type":"error"},{"inputs":[{"internalType":"uint256","name":"solverOutcomeResult","type":"uint256"}],"name":"SolverSimFail","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnbalancedAccounting","type":"error"},{"inputs":[],"name":"UncoveredResult","type":"error"},{"inputs":[],"name":"UnexpectedNonRevert","type":"error"},{"inputs":[],"name":"Unreachable","type":"error"},{"inputs":[],"name":"UserNotFulfilled","type":"error"},{"inputs":[],"name":"UserOpFail","type":"error"},{"inputs":[],"name":"UserOpSimFail","type":"error"},{"inputs":[],"name":"UserOpValueExceedsBalance","type":"error"},{"inputs":[],"name":"UserSimulationFailed","type":"error"},{"inputs":[],"name":"UserSimulationSucceeded","type":"error"},{"inputs":[],"name":"UserUnexpectedSuccess","type":"error"},{"inputs":[],"name":"UserWrapperCallFail","type":"error"},{"inputs":[],"name":"UserWrapperDelegatecallFail","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"ValidCalls","type":"error"},{"inputs":[],"name":"ValueTooLarge","type":"error"},{"inputs":[{"internalType":"enum ValidCallsResult","name":"","type":"uint8"}],"name":"VerificationSimFail","type":"error"},{"inputs":[],"name":"WrongDepth","type":"error"},{"inputs":[],"name":"WrongPhase","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DeployerWithdrawal","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"atlas","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"metacallSimulation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_atlas","type":"address"}],"name":"setAtlas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation","name":"solverOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"simSolverCall","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"enum Result","name":"simResult","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"control","type":"address"},{"internalType":"address","name":"bundler","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"bytes32","name":"callChainHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct DAppOperation","name":"dAppOp","type":"tuple"}],"name":"simSolverCalls","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"enum Result","name":"simResult","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"}],"name":"simUserOperation","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"enum Result","name":"simResult","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/contract/simulator/1.0.1/simulator.go b/contract/simulator/1.0.1/simulator.go new file mode 100644 index 0000000..78a8654 --- /dev/null +++ b/contract/simulator/1.0.1/simulator.go @@ -0,0 +1,602 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package simulator_1_0_1 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// SimulatorMetaData contains all meta data concerning the Simulator contract. +var SimulatorMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AllocateValueDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllocateValueSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlteredControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AtlasLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotReconciled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidFindSuccessful\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BidNotPaid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"indexInSolverOps\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"}],\"name\":\"BidTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallbackNotCalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DAppNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoubleReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnvironmentMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EscrowLockActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientAtlETHBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientAvailableBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalanceForDeduction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBondedBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEscrow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLocalFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"holds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientSolverBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientSurchargeBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shortfall\",\"type\":\"uint256\"}],\"name\":\"InsufficientTotalBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientUnbondedBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientWithdrawableBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCodeHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDAppControl\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEntryFunction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEscrowDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"correctEnvironment\",\"type\":\"address\"}],\"name\":\"InvalidExecutionEnvironment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLockState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSolver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"solverFrom\",\"type\":\"address\"}],\"name\":\"InvalidSolverFrom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTo\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidUser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertBidValueCannotBeExPostBids\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvertedBidExceedsCeiling\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerBalancing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"LedgerFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"MissingFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeDelegatecalled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAuctionWinner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDelegatecall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnfilledRequests\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoUnusedNonceInBitmap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnvironmentOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAtlas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyGovernance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PermitDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsDelegatecallReturnedFalse\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreOpsSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreSolverFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SimulationPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SimulatorBalanceTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverMustReconcile\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SolverOpReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"solverOutcomeResult\",\"type\":\"uint256\"}],\"name\":\"SolverSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnbalancedAccounting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UncoveredResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedNonRevert\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unreachable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserNotFulfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserOpValueExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserSimulationSucceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserUnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperCallFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UserWrapperDelegatecallFail\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"ValidCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidCallsResult\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"VerificationSimFail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongDepth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongPhase\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DeployerWithdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"atlas\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"metacallSimulation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_atlas\",\"type\":\"address\"}],\"name\":\"setAtlas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation\",\"name\":\"solverOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"simSolverCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"enumResult\",\"name\":\"simResult\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bundler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callChainHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structDAppOperation\",\"name\":\"dAppOp\",\"type\":\"tuple\"}],\"name\":\"simSolverCalls\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"enumResult\",\"name\":\"simResult\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"simUserOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"enumResult\",\"name\":\"simResult\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", +} + +// SimulatorABI is the input ABI used to generate the binding from. +// Deprecated: Use SimulatorMetaData.ABI instead. +var SimulatorABI = SimulatorMetaData.ABI + +// Simulator is an auto generated Go binding around an Ethereum contract. +type Simulator struct { + SimulatorCaller // Read-only binding to the contract + SimulatorTransactor // Write-only binding to the contract + SimulatorFilterer // Log filterer for contract events +} + +// SimulatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type SimulatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SimulatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SimulatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SimulatorSession struct { + Contract *Simulator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SimulatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SimulatorCallerSession struct { + Contract *SimulatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SimulatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SimulatorTransactorSession struct { + Contract *SimulatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SimulatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type SimulatorRaw struct { + Contract *Simulator // Generic contract binding to access the raw methods on +} + +// SimulatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SimulatorCallerRaw struct { + Contract *SimulatorCaller // Generic read-only contract binding to access the raw methods on +} + +// SimulatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SimulatorTransactorRaw struct { + Contract *SimulatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSimulator creates a new instance of Simulator, bound to a specific deployed contract. +func NewSimulator(address common.Address, backend bind.ContractBackend) (*Simulator, error) { + contract, err := bindSimulator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Simulator{SimulatorCaller: SimulatorCaller{contract: contract}, SimulatorTransactor: SimulatorTransactor{contract: contract}, SimulatorFilterer: SimulatorFilterer{contract: contract}}, nil +} + +// NewSimulatorCaller creates a new read-only instance of Simulator, bound to a specific deployed contract. +func NewSimulatorCaller(address common.Address, caller bind.ContractCaller) (*SimulatorCaller, error) { + contract, err := bindSimulator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SimulatorCaller{contract: contract}, nil +} + +// NewSimulatorTransactor creates a new write-only instance of Simulator, bound to a specific deployed contract. +func NewSimulatorTransactor(address common.Address, transactor bind.ContractTransactor) (*SimulatorTransactor, error) { + contract, err := bindSimulator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SimulatorTransactor{contract: contract}, nil +} + +// NewSimulatorFilterer creates a new log filterer instance of Simulator, bound to a specific deployed contract. +func NewSimulatorFilterer(address common.Address, filterer bind.ContractFilterer) (*SimulatorFilterer, error) { + contract, err := bindSimulator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SimulatorFilterer{contract: contract}, nil +} + +// bindSimulator binds a generic wrapper to an already deployed contract. +func bindSimulator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SimulatorABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Simulator *SimulatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Simulator.Contract.SimulatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Simulator *SimulatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.Contract.SimulatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Simulator *SimulatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Simulator.Contract.SimulatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Simulator *SimulatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Simulator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Simulator *SimulatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Simulator *SimulatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Simulator.Contract.contract.Transact(opts, method, params...) +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorCaller) Atlas(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Simulator.contract.Call(opts, &out, "atlas") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorSession) Atlas() (common.Address, error) { + return _Simulator.Contract.Atlas(&_Simulator.CallOpts) +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorCallerSession) Atlas() (common.Address, error) { + return _Simulator.Contract.Atlas(&_Simulator.CallOpts) +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorCaller) Deployer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Simulator.contract.Call(opts, &out, "deployer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorSession) Deployer() (common.Address, error) { + return _Simulator.Contract.Deployer(&_Simulator.CallOpts) +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorCallerSession) Deployer() (common.Address, error) { + return _Simulator.Contract.Deployer(&_Simulator.CallOpts) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorTransactor) MetacallSimulation(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "metacallSimulation", userOp, solverOps, dAppOp) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorSession) MetacallSimulation(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.MetacallSimulation(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorTransactorSession) MetacallSimulation(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.MetacallSimulation(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorTransactor) SetAtlas(opts *bind.TransactOpts, _atlas common.Address) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "setAtlas", _atlas) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorSession) SetAtlas(_atlas common.Address) (*types.Transaction, error) { + return _Simulator.Contract.SetAtlas(&_Simulator.TransactOpts, _atlas) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorTransactorSession) SetAtlas(_atlas common.Address) (*types.Transaction, error) { + return _Simulator.Contract.SetAtlas(&_Simulator.TransactOpts, _atlas) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimSolverCall(opts *bind.TransactOpts, userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simSolverCall", userOp, solverOp, dAppOp) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimSolverCall(userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCall(&_Simulator.TransactOpts, userOp, solverOp, dAppOp) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimSolverCall(userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCall(&_Simulator.TransactOpts, userOp, solverOp, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimSolverCalls(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simSolverCalls", userOp, solverOps, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimSolverCalls(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCalls(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimSolverCalls(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCalls(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimUserOperation(opts *bind.TransactOpts, userOp UserOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simUserOperation", userOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimUserOperation(userOp UserOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimUserOperation(&_Simulator.TransactOpts, userOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimUserOperation(userOp UserOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimUserOperation(&_Simulator.TransactOpts, userOp) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorTransactor) WithdrawETH(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "withdrawETH", to) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorSession) WithdrawETH(to common.Address) (*types.Transaction, error) { + return _Simulator.Contract.WithdrawETH(&_Simulator.TransactOpts, to) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorTransactorSession) WithdrawETH(to common.Address) (*types.Transaction, error) { + return _Simulator.Contract.WithdrawETH(&_Simulator.TransactOpts, to) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Simulator.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Simulator.Contract.Fallback(&_Simulator.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Simulator.Contract.Fallback(&_Simulator.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorSession) Receive() (*types.Transaction, error) { + return _Simulator.Contract.Receive(&_Simulator.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorTransactorSession) Receive() (*types.Transaction, error) { + return _Simulator.Contract.Receive(&_Simulator.TransactOpts) +} + +// SimulatorDeployerWithdrawalIterator is returned from FilterDeployerWithdrawal and is used to iterate over the raw logs and unpacked data for DeployerWithdrawal events raised by the Simulator contract. +type SimulatorDeployerWithdrawalIterator struct { + Event *SimulatorDeployerWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SimulatorDeployerWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SimulatorDeployerWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SimulatorDeployerWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SimulatorDeployerWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SimulatorDeployerWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SimulatorDeployerWithdrawal represents a DeployerWithdrawal event raised by the Simulator contract. +type SimulatorDeployerWithdrawal struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeployerWithdrawal is a free log retrieval operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) FilterDeployerWithdrawal(opts *bind.FilterOpts, to []common.Address) (*SimulatorDeployerWithdrawalIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Simulator.contract.FilterLogs(opts, "DeployerWithdrawal", toRule) + if err != nil { + return nil, err + } + return &SimulatorDeployerWithdrawalIterator{contract: _Simulator.contract, event: "DeployerWithdrawal", logs: logs, sub: sub}, nil +} + +// WatchDeployerWithdrawal is a free log subscription operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) WatchDeployerWithdrawal(opts *bind.WatchOpts, sink chan<- *SimulatorDeployerWithdrawal, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Simulator.contract.WatchLogs(opts, "DeployerWithdrawal", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SimulatorDeployerWithdrawal) + if err := _Simulator.contract.UnpackLog(event, "DeployerWithdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeployerWithdrawal is a log parse operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) ParseDeployerWithdrawal(log types.Log) (*SimulatorDeployerWithdrawal, error) { + event := new(SimulatorDeployerWithdrawal) + if err := _Simulator.contract.UnpackLog(event, "DeployerWithdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/simulator/1.1.0/abi.json b/contract/simulator/1.1.0/abi.json new file mode 100644 index 0000000..987f5be --- /dev/null +++ b/contract/simulator/1.1.0/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"atlas","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deployer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metacallSimulation","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setAtlas","inputs":[{"name":"_atlas","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simSolverCall","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"simResult","type":"uint8","internalType":"enum Result"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"simSolverCalls","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"simResult","type":"uint8","internalType":"enum Result"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"simUserOperation","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"simResult","type":"uint8","internalType":"enum Result"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"withdrawETH","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DeployerWithdrawal","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AllocateValueDelegatecallFail","inputs":[]},{"type":"error","name":"AllocateValueFail","inputs":[]},{"type":"error","name":"AllocateValueSimFail","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlteredControl","inputs":[]},{"type":"error","name":"AtlasLockActive","inputs":[]},{"type":"error","name":"BalanceNotReconciled","inputs":[]},{"type":"error","name":"BidFindSuccessful","inputs":[{"name":"bidAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BidNotPaid","inputs":[]},{"type":"error","name":"BothPreOpsAndUserReturnDataCannotBeTracked","inputs":[]},{"type":"error","name":"BothUserAndDAppNoncesCannotBeSequential","inputs":[]},{"type":"error","name":"CallbackNotCalled","inputs":[]},{"type":"error","name":"DAppNotEnabled","inputs":[]},{"type":"error","name":"DoubleReconcile","inputs":[]},{"type":"error","name":"EnvironmentMismatch","inputs":[]},{"type":"error","name":"EscrowLockActive","inputs":[]},{"type":"error","name":"ExecutionEnvironmentBalanceTooLow","inputs":[]},{"type":"error","name":"InsufficientAtlETHBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientBalanceForDeduction","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"requested","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientEscrow","inputs":[]},{"type":"error","name":"InsufficientFunds","inputs":[]},{"type":"error","name":"InsufficientLocalFunds","inputs":[]},{"type":"error","name":"InsufficientSolverBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"holds","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTotalBalance","inputs":[{"name":"shortfall","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidAccess","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"InvalidCodeHash","inputs":[]},{"type":"error","name":"InvalidControl","inputs":[]},{"type":"error","name":"InvalidDAppControl","inputs":[]},{"type":"error","name":"InvalidEntry","inputs":[]},{"type":"error","name":"InvalidEntryFunction","inputs":[]},{"type":"error","name":"InvalidEnvironment","inputs":[]},{"type":"error","name":"InvalidEscrowDuration","inputs":[]},{"type":"error","name":"InvalidExecutionEnvironment","inputs":[{"name":"correctEnvironment","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidLockState","inputs":[]},{"type":"error","name":"InvalidSignatory","inputs":[]},{"type":"error","name":"InvalidSolver","inputs":[]},{"type":"error","name":"InvalidSolverFrom","inputs":[{"name":"solverFrom","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTo","inputs":[]},{"type":"error","name":"InvalidUser","inputs":[]},{"type":"error","name":"InvertBidValueCannotBeExPostBids","inputs":[]},{"type":"error","name":"InvertedBidExceedsCeiling","inputs":[]},{"type":"error","name":"LedgerBalancing","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"LedgerFinalized","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MissingFunds","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MustBeDelegatecalled","inputs":[]},{"type":"error","name":"NoAuctionWinner","inputs":[]},{"type":"error","name":"NoDelegatecall","inputs":[]},{"type":"error","name":"NoUnfilledRequests","inputs":[]},{"type":"error","name":"NoUnusedNonceInBitmap","inputs":[]},{"type":"error","name":"NotEnvironmentOwner","inputs":[]},{"type":"error","name":"NotImplemented","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"OnlyAtlas","inputs":[]},{"type":"error","name":"OnlyGovernance","inputs":[]},{"type":"error","name":"PostOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PostOpsDelegatecallReturnedFalse","inputs":[]},{"type":"error","name":"PostOpsFail","inputs":[]},{"type":"error","name":"PostOpsSimFail","inputs":[]},{"type":"error","name":"PostSolverFailed","inputs":[]},{"type":"error","name":"PreOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PreOpsFail","inputs":[]},{"type":"error","name":"PreOpsSimFail","inputs":[]},{"type":"error","name":"PreSolverFailed","inputs":[]},{"type":"error","name":"SignatoryActive","inputs":[]},{"type":"error","name":"SimulationPassed","inputs":[]},{"type":"error","name":"SimulatorBalanceTooLow","inputs":[]},{"type":"error","name":"SolverMustReconcile","inputs":[]},{"type":"error","name":"SolverOpReverted","inputs":[]},{"type":"error","name":"SolverSimFail","inputs":[{"name":"solverOutcomeResult","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnbalancedAccounting","inputs":[]},{"type":"error","name":"UncoveredResult","inputs":[]},{"type":"error","name":"UnexpectedNonRevert","inputs":[]},{"type":"error","name":"Unreachable","inputs":[]},{"type":"error","name":"UserNotFulfilled","inputs":[]},{"type":"error","name":"UserOpFail","inputs":[]},{"type":"error","name":"UserOpSimFail","inputs":[]},{"type":"error","name":"UserOpValueExceedsBalance","inputs":[]},{"type":"error","name":"UserSimulationFailed","inputs":[]},{"type":"error","name":"UserSimulationSucceeded","inputs":[]},{"type":"error","name":"UserUnexpectedSuccess","inputs":[]},{"type":"error","name":"UserWrapperCallFail","inputs":[]},{"type":"error","name":"UserWrapperDelegatecallFail","inputs":[]},{"type":"error","name":"ValidCalls","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"VerificationSimFail","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"WrongDepth","inputs":[]},{"type":"error","name":"WrongPhase","inputs":[]}] \ No newline at end of file diff --git a/contract/simulator/1.1.0/simulator.go b/contract/simulator/1.1.0/simulator.go new file mode 100644 index 0000000..21c1a15 --- /dev/null +++ b/contract/simulator/1.1.0/simulator.go @@ -0,0 +1,602 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package simulator_1_1_0 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// SimulatorMetaData contains all meta data concerning the Simulator contract. +var SimulatorMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"atlas\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deployer\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"metacallSimulation\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setAtlas\",\"inputs\":[{\"name\":\"_atlas\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"simSolverCall\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"simResult\",\"type\":\"uint8\",\"internalType\":\"enumResult\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"simSolverCalls\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"simResult\",\"type\":\"uint8\",\"internalType\":\"enumResult\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"simUserOperation\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"simResult\",\"type\":\"uint8\",\"internalType\":\"enumResult\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawETH\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DeployerWithdrawal\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AllocateValueDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlteredControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AtlasLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BalanceNotReconciled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidFindSuccessful\",\"inputs\":[{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BidNotPaid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallbackNotCalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DAppNotEnabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DoubleReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnvironmentMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EscrowLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAtlETHBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientBalanceForDeduction\",\"inputs\":[{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requested\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientEscrow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientLocalFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientSolverBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"holds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientTotalBalance\",\"inputs\":[{\"name\":\"shortfall\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidAccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodeHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDAppControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntry\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntryFunction\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEnvironment\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEscrowDuration\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidExecutionEnvironment\",\"inputs\":[{\"name\":\"correctEnvironment\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidLockState\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatory\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolver\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolverFrom\",\"inputs\":[{\"name\":\"solverFrom\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTo\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidUser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertBidValueCannotBeExPostBids\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertedBidExceedsCeiling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LedgerBalancing\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"LedgerFinalized\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MissingFunds\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MustBeDelegatecalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoAuctionWinner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoDelegatecall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnfilledRequests\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnusedNonceInBitmap\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEnvironmentOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotImplemented\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAtlas\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyGovernance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallReturnedFalse\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatoryActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulationPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulatorBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverMustReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverOpReverted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverSimFail\",\"inputs\":[{\"name\":\"solverOutcomeResult\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnbalancedAccounting\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UncoveredResult\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedNonRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unreachable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserNotFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpValueExceedsBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationSucceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserUnexpectedSuccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperCallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidCalls\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"VerificationSimFail\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"WrongDepth\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongPhase\",\"inputs\":[]}]", +} + +// SimulatorABI is the input ABI used to generate the binding from. +// Deprecated: Use SimulatorMetaData.ABI instead. +var SimulatorABI = SimulatorMetaData.ABI + +// Simulator is an auto generated Go binding around an Ethereum contract. +type Simulator struct { + SimulatorCaller // Read-only binding to the contract + SimulatorTransactor // Write-only binding to the contract + SimulatorFilterer // Log filterer for contract events +} + +// SimulatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type SimulatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SimulatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SimulatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SimulatorSession struct { + Contract *Simulator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SimulatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SimulatorCallerSession struct { + Contract *SimulatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SimulatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SimulatorTransactorSession struct { + Contract *SimulatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SimulatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type SimulatorRaw struct { + Contract *Simulator // Generic contract binding to access the raw methods on +} + +// SimulatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SimulatorCallerRaw struct { + Contract *SimulatorCaller // Generic read-only contract binding to access the raw methods on +} + +// SimulatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SimulatorTransactorRaw struct { + Contract *SimulatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSimulator creates a new instance of Simulator, bound to a specific deployed contract. +func NewSimulator(address common.Address, backend bind.ContractBackend) (*Simulator, error) { + contract, err := bindSimulator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Simulator{SimulatorCaller: SimulatorCaller{contract: contract}, SimulatorTransactor: SimulatorTransactor{contract: contract}, SimulatorFilterer: SimulatorFilterer{contract: contract}}, nil +} + +// NewSimulatorCaller creates a new read-only instance of Simulator, bound to a specific deployed contract. +func NewSimulatorCaller(address common.Address, caller bind.ContractCaller) (*SimulatorCaller, error) { + contract, err := bindSimulator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SimulatorCaller{contract: contract}, nil +} + +// NewSimulatorTransactor creates a new write-only instance of Simulator, bound to a specific deployed contract. +func NewSimulatorTransactor(address common.Address, transactor bind.ContractTransactor) (*SimulatorTransactor, error) { + contract, err := bindSimulator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SimulatorTransactor{contract: contract}, nil +} + +// NewSimulatorFilterer creates a new log filterer instance of Simulator, bound to a specific deployed contract. +func NewSimulatorFilterer(address common.Address, filterer bind.ContractFilterer) (*SimulatorFilterer, error) { + contract, err := bindSimulator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SimulatorFilterer{contract: contract}, nil +} + +// bindSimulator binds a generic wrapper to an already deployed contract. +func bindSimulator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SimulatorABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Simulator *SimulatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Simulator.Contract.SimulatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Simulator *SimulatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.Contract.SimulatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Simulator *SimulatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Simulator.Contract.SimulatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Simulator *SimulatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Simulator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Simulator *SimulatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Simulator *SimulatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Simulator.Contract.contract.Transact(opts, method, params...) +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorCaller) Atlas(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Simulator.contract.Call(opts, &out, "atlas") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorSession) Atlas() (common.Address, error) { + return _Simulator.Contract.Atlas(&_Simulator.CallOpts) +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorCallerSession) Atlas() (common.Address, error) { + return _Simulator.Contract.Atlas(&_Simulator.CallOpts) +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorCaller) Deployer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Simulator.contract.Call(opts, &out, "deployer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorSession) Deployer() (common.Address, error) { + return _Simulator.Contract.Deployer(&_Simulator.CallOpts) +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorCallerSession) Deployer() (common.Address, error) { + return _Simulator.Contract.Deployer(&_Simulator.CallOpts) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorTransactor) MetacallSimulation(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "metacallSimulation", userOp, solverOps, dAppOp) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorSession) MetacallSimulation(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.MetacallSimulation(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorTransactorSession) MetacallSimulation(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.MetacallSimulation(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorTransactor) SetAtlas(opts *bind.TransactOpts, _atlas common.Address) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "setAtlas", _atlas) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorSession) SetAtlas(_atlas common.Address) (*types.Transaction, error) { + return _Simulator.Contract.SetAtlas(&_Simulator.TransactOpts, _atlas) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorTransactorSession) SetAtlas(_atlas common.Address) (*types.Transaction, error) { + return _Simulator.Contract.SetAtlas(&_Simulator.TransactOpts, _atlas) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimSolverCall(opts *bind.TransactOpts, userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simSolverCall", userOp, solverOp, dAppOp) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimSolverCall(userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCall(&_Simulator.TransactOpts, userOp, solverOp, dAppOp) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimSolverCall(userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCall(&_Simulator.TransactOpts, userOp, solverOp, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimSolverCalls(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simSolverCalls", userOp, solverOps, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimSolverCalls(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCalls(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimSolverCalls(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCalls(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimUserOperation(opts *bind.TransactOpts, userOp UserOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simUserOperation", userOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimUserOperation(userOp UserOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimUserOperation(&_Simulator.TransactOpts, userOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimUserOperation(userOp UserOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimUserOperation(&_Simulator.TransactOpts, userOp) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorTransactor) WithdrawETH(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "withdrawETH", to) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorSession) WithdrawETH(to common.Address) (*types.Transaction, error) { + return _Simulator.Contract.WithdrawETH(&_Simulator.TransactOpts, to) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorTransactorSession) WithdrawETH(to common.Address) (*types.Transaction, error) { + return _Simulator.Contract.WithdrawETH(&_Simulator.TransactOpts, to) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Simulator.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Simulator.Contract.Fallback(&_Simulator.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Simulator.Contract.Fallback(&_Simulator.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorSession) Receive() (*types.Transaction, error) { + return _Simulator.Contract.Receive(&_Simulator.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorTransactorSession) Receive() (*types.Transaction, error) { + return _Simulator.Contract.Receive(&_Simulator.TransactOpts) +} + +// SimulatorDeployerWithdrawalIterator is returned from FilterDeployerWithdrawal and is used to iterate over the raw logs and unpacked data for DeployerWithdrawal events raised by the Simulator contract. +type SimulatorDeployerWithdrawalIterator struct { + Event *SimulatorDeployerWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SimulatorDeployerWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SimulatorDeployerWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SimulatorDeployerWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SimulatorDeployerWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SimulatorDeployerWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SimulatorDeployerWithdrawal represents a DeployerWithdrawal event raised by the Simulator contract. +type SimulatorDeployerWithdrawal struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeployerWithdrawal is a free log retrieval operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) FilterDeployerWithdrawal(opts *bind.FilterOpts, to []common.Address) (*SimulatorDeployerWithdrawalIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Simulator.contract.FilterLogs(opts, "DeployerWithdrawal", toRule) + if err != nil { + return nil, err + } + return &SimulatorDeployerWithdrawalIterator{contract: _Simulator.contract, event: "DeployerWithdrawal", logs: logs, sub: sub}, nil +} + +// WatchDeployerWithdrawal is a free log subscription operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) WatchDeployerWithdrawal(opts *bind.WatchOpts, sink chan<- *SimulatorDeployerWithdrawal, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Simulator.contract.WatchLogs(opts, "DeployerWithdrawal", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SimulatorDeployerWithdrawal) + if err := _Simulator.contract.UnpackLog(event, "DeployerWithdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeployerWithdrawal is a log parse operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) ParseDeployerWithdrawal(log types.Log) (*SimulatorDeployerWithdrawal, error) { + event := new(SimulatorDeployerWithdrawal) + if err := _Simulator.contract.UnpackLog(event, "DeployerWithdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/sorter/abi.json b/contract/sorter/1.0.0/abi.json similarity index 100% rename from contract/sorter/abi.json rename to contract/sorter/1.0.0/abi.json diff --git a/contract/sorter/sorter.go b/contract/sorter/1.0.0/sorter.go similarity index 99% rename from contract/sorter/sorter.go rename to contract/sorter/1.0.0/sorter.go index 577bf05..4dffb6f 100644 --- a/contract/sorter/sorter.go +++ b/contract/sorter/1.0.0/sorter.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package sorter +package sorter_1_0_0 import ( "errors" diff --git a/contract/sorter/1.0.1/abi.json b/contract/sorter/1.0.1/abi.json new file mode 100644 index 0000000..9b6642e --- /dev/null +++ b/contract/sorter/1.0.1/abi.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_atlas","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ATLAS","outputs":[{"internalType":"contract IAtlas","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERIFICATION","outputs":[{"internalType":"contract IAtlasVerification","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"uint32","name":"callConfig","type":"uint32"},{"internalType":"address","name":"sessionKey","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"solverOps","type":"tuple[]"}],"name":"sortBids","outputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"solver","type":"address"},{"internalType":"address","name":"control","type":"address"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"address","name":"bidToken","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct SolverOperation[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/contract/sorter/1.0.1/sorter.go b/contract/sorter/1.0.1/sorter.go new file mode 100644 index 0000000..89f2f5b --- /dev/null +++ b/contract/sorter/1.0.1/sorter.go @@ -0,0 +1,307 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package sorter_1_0_1 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// SorterMetaData contains all meta data concerning the Sorter contract. +var SorterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_atlas\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ATLAS\",\"outputs\":[{\"internalType\":\"contractIAtlas\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERIFICATION\",\"outputs\":[{\"internalType\":\"contractIAtlasVerification\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callConfig\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sessionKey\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"solverOps\",\"type\":\"tuple[]\"}],\"name\":\"sortBids\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"control\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bidToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bidAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structSolverOperation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// SorterABI is the input ABI used to generate the binding from. +// Deprecated: Use SorterMetaData.ABI instead. +var SorterABI = SorterMetaData.ABI + +// Sorter is an auto generated Go binding around an Ethereum contract. +type Sorter struct { + SorterCaller // Read-only binding to the contract + SorterTransactor // Write-only binding to the contract + SorterFilterer // Log filterer for contract events +} + +// SorterCaller is an auto generated read-only Go binding around an Ethereum contract. +type SorterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SorterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SorterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SorterSession struct { + Contract *Sorter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SorterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SorterCallerSession struct { + Contract *SorterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SorterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SorterTransactorSession struct { + Contract *SorterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SorterRaw is an auto generated low-level Go binding around an Ethereum contract. +type SorterRaw struct { + Contract *Sorter // Generic contract binding to access the raw methods on +} + +// SorterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SorterCallerRaw struct { + Contract *SorterCaller // Generic read-only contract binding to access the raw methods on +} + +// SorterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SorterTransactorRaw struct { + Contract *SorterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSorter creates a new instance of Sorter, bound to a specific deployed contract. +func NewSorter(address common.Address, backend bind.ContractBackend) (*Sorter, error) { + contract, err := bindSorter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Sorter{SorterCaller: SorterCaller{contract: contract}, SorterTransactor: SorterTransactor{contract: contract}, SorterFilterer: SorterFilterer{contract: contract}}, nil +} + +// NewSorterCaller creates a new read-only instance of Sorter, bound to a specific deployed contract. +func NewSorterCaller(address common.Address, caller bind.ContractCaller) (*SorterCaller, error) { + contract, err := bindSorter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SorterCaller{contract: contract}, nil +} + +// NewSorterTransactor creates a new write-only instance of Sorter, bound to a specific deployed contract. +func NewSorterTransactor(address common.Address, transactor bind.ContractTransactor) (*SorterTransactor, error) { + contract, err := bindSorter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SorterTransactor{contract: contract}, nil +} + +// NewSorterFilterer creates a new log filterer instance of Sorter, bound to a specific deployed contract. +func NewSorterFilterer(address common.Address, filterer bind.ContractFilterer) (*SorterFilterer, error) { + contract, err := bindSorter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SorterFilterer{contract: contract}, nil +} + +// bindSorter binds a generic wrapper to an already deployed contract. +func bindSorter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SorterABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sorter *SorterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sorter.Contract.SorterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sorter *SorterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sorter.Contract.SorterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sorter *SorterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sorter.Contract.SorterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sorter *SorterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sorter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sorter *SorterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sorter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sorter *SorterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sorter.Contract.contract.Transact(opts, method, params...) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterCaller) ATLAS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "ATLAS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterSession) ATLAS() (common.Address, error) { + return _Sorter.Contract.ATLAS(&_Sorter.CallOpts) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterCallerSession) ATLAS() (common.Address, error) { + return _Sorter.Contract.ATLAS(&_Sorter.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterCaller) VERIFICATION(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "VERIFICATION") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterSession) VERIFICATION() (common.Address, error) { + return _Sorter.Contract.VERIFICATION(&_Sorter.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterCallerSession) VERIFICATION() (common.Address, error) { + return _Sorter.Contract.VERIFICATION(&_Sorter.CallOpts) +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterCaller) SortBids(opts *bind.CallOpts, userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "sortBids", userOp, solverOps) + + if err != nil { + return *new([]SolverOperation), err + } + + out0 := *abi.ConvertType(out[0], new([]SolverOperation)).(*[]SolverOperation) + + return out0, err + +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterSession) SortBids(userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + return _Sorter.Contract.SortBids(&_Sorter.CallOpts, userOp, solverOps) +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterCallerSession) SortBids(userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + return _Sorter.Contract.SortBids(&_Sorter.CallOpts, userOp, solverOps) +} diff --git a/contract/sorter/1.1.0/abi.json b/contract/sorter/1.1.0/abi.json new file mode 100644 index 0000000..7c5d363 --- /dev/null +++ b/contract/sorter/1.1.0/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[{"name":"_atlas","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"ATLAS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAtlas"}],"stateMutability":"view"},{"type":"function","name":"VERIFICATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAtlasVerification"}],"stateMutability":"view"},{"type":"function","name":"sortBids","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"}] \ No newline at end of file diff --git a/contract/sorter/1.1.0/sorter.go b/contract/sorter/1.1.0/sorter.go new file mode 100644 index 0000000..da29ad0 --- /dev/null +++ b/contract/sorter/1.1.0/sorter.go @@ -0,0 +1,307 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package sorter_1_1_0 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// SorterMetaData contains all meta data concerning the Sorter contract. +var SorterMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_atlas\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ATLAS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAtlas\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERIFICATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAtlasVerification\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sortBids\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"}]", +} + +// SorterABI is the input ABI used to generate the binding from. +// Deprecated: Use SorterMetaData.ABI instead. +var SorterABI = SorterMetaData.ABI + +// Sorter is an auto generated Go binding around an Ethereum contract. +type Sorter struct { + SorterCaller // Read-only binding to the contract + SorterTransactor // Write-only binding to the contract + SorterFilterer // Log filterer for contract events +} + +// SorterCaller is an auto generated read-only Go binding around an Ethereum contract. +type SorterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SorterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SorterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SorterSession struct { + Contract *Sorter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SorterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SorterCallerSession struct { + Contract *SorterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SorterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SorterTransactorSession struct { + Contract *SorterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SorterRaw is an auto generated low-level Go binding around an Ethereum contract. +type SorterRaw struct { + Contract *Sorter // Generic contract binding to access the raw methods on +} + +// SorterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SorterCallerRaw struct { + Contract *SorterCaller // Generic read-only contract binding to access the raw methods on +} + +// SorterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SorterTransactorRaw struct { + Contract *SorterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSorter creates a new instance of Sorter, bound to a specific deployed contract. +func NewSorter(address common.Address, backend bind.ContractBackend) (*Sorter, error) { + contract, err := bindSorter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Sorter{SorterCaller: SorterCaller{contract: contract}, SorterTransactor: SorterTransactor{contract: contract}, SorterFilterer: SorterFilterer{contract: contract}}, nil +} + +// NewSorterCaller creates a new read-only instance of Sorter, bound to a specific deployed contract. +func NewSorterCaller(address common.Address, caller bind.ContractCaller) (*SorterCaller, error) { + contract, err := bindSorter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SorterCaller{contract: contract}, nil +} + +// NewSorterTransactor creates a new write-only instance of Sorter, bound to a specific deployed contract. +func NewSorterTransactor(address common.Address, transactor bind.ContractTransactor) (*SorterTransactor, error) { + contract, err := bindSorter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SorterTransactor{contract: contract}, nil +} + +// NewSorterFilterer creates a new log filterer instance of Sorter, bound to a specific deployed contract. +func NewSorterFilterer(address common.Address, filterer bind.ContractFilterer) (*SorterFilterer, error) { + contract, err := bindSorter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SorterFilterer{contract: contract}, nil +} + +// bindSorter binds a generic wrapper to an already deployed contract. +func bindSorter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SorterABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sorter *SorterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sorter.Contract.SorterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sorter *SorterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sorter.Contract.SorterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sorter *SorterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sorter.Contract.SorterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sorter *SorterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sorter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sorter *SorterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sorter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sorter *SorterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sorter.Contract.contract.Transact(opts, method, params...) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterCaller) ATLAS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "ATLAS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterSession) ATLAS() (common.Address, error) { + return _Sorter.Contract.ATLAS(&_Sorter.CallOpts) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterCallerSession) ATLAS() (common.Address, error) { + return _Sorter.Contract.ATLAS(&_Sorter.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterCaller) VERIFICATION(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "VERIFICATION") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterSession) VERIFICATION() (common.Address, error) { + return _Sorter.Contract.VERIFICATION(&_Sorter.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterCallerSession) VERIFICATION() (common.Address, error) { + return _Sorter.Contract.VERIFICATION(&_Sorter.CallOpts) +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterCaller) SortBids(opts *bind.CallOpts, userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "sortBids", userOp, solverOps) + + if err != nil { + return *new([]SolverOperation), err + } + + out0 := *abi.ConvertType(out[0], new([]SolverOperation)).(*[]SolverOperation) + + return out0, err + +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterSession) SortBids(userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + return _Sorter.Contract.SortBids(&_Sorter.CallOpts, userOp, solverOps) +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterCallerSession) SortBids(userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + return _Sorter.Contract.SortBids(&_Sorter.CallOpts, userOp, solverOps) +} diff --git a/core/atlas.go b/core/atlas.go index 87a70db..55f6626 100644 --- a/core/atlas.go +++ b/core/atlas.go @@ -1,59 +1,55 @@ package core import ( - "errors" - - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas" + "github.com/FastLane-Labs/atlas-sdk-go/config" + "github.com/FastLane-Labs/atlas-sdk-go/contract" "github.com/FastLane-Labs/atlas-sdk-go/types" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" gethTypes "github.com/ethereum/go-ethereum/core/types" ) -func (sdk *AtlasSdk) Metacall(chainId uint64, transactOpts *bind.TransactOpts, userOp *types.UserOperation, solverOps types.SolverOperations, dAppOp *types.DAppOperation) (*gethTypes.Transaction, error) { - contract, ok := sdk.atlasContract[chainId] - if !ok { - return nil, errors.New("atlas contract not found") +const ( + metacallFunction = "metacall" +) + +func (sdk *AtlasSdk) Metacall(chainId uint64, version *string, transactOpts *bind.TransactOpts, userOp *types.UserOperation, solverOps types.SolverOperations, dAppOp *types.DAppOperation, gasRefundBeneficiary *common.Address) (*gethTypes.Transaction, error) { + ethClient, err := sdk.getEthClient(chainId) + if err != nil { + return nil, err + } + + atlasAddr, err := config.GetAtlasAddress(chainId, version) + if err != nil { + return nil, err + } + + atlasAbi, err := contract.GetAtlasAbi(version) + if err != nil { + return nil, err } userOp.Sanitize() solverOps.Sanitize() dAppOp.Sanitize() - _dAppOp := atlas.DAppOperation{ - From: dAppOp.From, - To: dAppOp.To, - Nonce: dAppOp.Nonce, - Deadline: dAppOp.Deadline, - Control: dAppOp.Control, - Bundler: dAppOp.Bundler, - UserOpHash: dAppOp.UserOpHash, - CallChainHash: dAppOp.CallChainHash, - Signature: dAppOp.Signature, - } + var ( + contract = bind.NewBoundContract(atlasAddr, *atlasAbi, ethClient, ethClient, ethClient) + params []interface{} + ) - _solverOps := make([]atlas.SolverOperation, len(solverOps)) - for i, solverOp := range solverOps { - _solverOps[i] = atlas.SolverOperation{ - From: solverOp.From, - To: solverOp.To, - Value: solverOp.Value, - Gas: solverOp.Gas, - MaxFeePerGas: solverOp.MaxFeePerGas, - Deadline: solverOp.Deadline, - Solver: solverOp.Solver, - Control: solverOp.Control, - UserOpHash: solverOp.UserOpHash, - BidToken: solverOp.BidToken, - BidAmount: solverOp.BidAmount, - Data: solverOp.Data, - Signature: solverOp.Signature, + switch config.GetVersion(version) { + case config.AtlasV_1_0_0, config.AtlasV_1_0_1: + params = append(params, userOp, solverOps, dAppOp) + + case config.AtlasV_1_1_0: + var _gasRefundBeneficiary common.Address + if gasRefundBeneficiary != nil { + _gasRefundBeneficiary = *gasRefundBeneficiary } - } - tx, err := contract.Metacall(transactOpts, atlas.UserOperation(*userOp), _solverOps, _dAppOp) - if err != nil { - return nil, err + params = append(params, userOp, solverOps, dAppOp, _gasRefundBeneficiary) } - return tx, nil + return contract.Transact(transactOpts, metacallFunction, params...) } diff --git a/core/atleth.go b/core/atleth.go index f4e5104..efbe665 100644 --- a/core/atleth.go +++ b/core/atleth.go @@ -1,20 +1,64 @@ package core import ( - "errors" + "fmt" "math/big" + "github.com/FastLane-Labs/atlas-sdk-go/config" + "github.com/FastLane-Labs/atlas-sdk-go/contract" + "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" ) -func (sdk *AtlasSdk) GetBalanceOfBondedAtlEth(chainId uint64, account common.Address) (*big.Int, error) { - contract, ok := sdk.atlasContract[chainId] - if !ok { - return nil, errors.New("atlas contract not found") +const ( + balanceOfBondedFunction = "balanceOfBonded" +) + +func (sdk *AtlasSdk) GetBalanceOfBondedAtlEth(chainId uint64, version *string, account common.Address) (*big.Int, error) { + ethClient, err := sdk.getEthClient(chainId) + if err != nil { + return nil, err + } + + atlasAddr, err := config.GetAtlasAddress(chainId, version) + if err != nil { + return nil, err + } + + atlasAbi, err := contract.GetAtlasAbi(version) + if err != nil { + return nil, err + } + + pData, err := atlasAbi.Pack(balanceOfBondedFunction, account) + if err != nil { + return nil, fmt.Errorf("failed to pack %s: %w", balanceOfBondedFunction, err) } - callOpts, cancel := NewCallOptsWithNetworkDeadline() + ctx, cancel := NewContextWithNetworkDeadline() defer cancel() - return contract.BalanceOfBonded(callOpts, account) + bData, err := ethClient.CallContract( + ctx, + ethereum.CallMsg{ + To: &atlasAddr, + Data: pData, + }, + nil, + ) + if err != nil { + return nil, fmt.Errorf("failed to call %s: %w", balanceOfBondedFunction, err) + } + + _balanceOfBonded, err := atlasAbi.Unpack(balanceOfBondedFunction, bData) + if err != nil { + return nil, fmt.Errorf("failed to unpack %s: %w", balanceOfBondedFunction, err) + } + + balanceOfBonded, ok := _balanceOfBonded[0].(*big.Int) + if !ok { + return nil, fmt.Errorf("failed to cast %s: %w", balanceOfBondedFunction, err) + } + + return balanceOfBonded, nil } diff --git a/core/nonce.go b/core/nonce.go index cc834f9..249f2f9 100644 --- a/core/nonce.go +++ b/core/nonce.go @@ -1,16 +1,25 @@ package core import ( - "errors" + "fmt" "math/big" + "github.com/FastLane-Labs/atlas-sdk-go/config" + "github.com/FastLane-Labs/atlas-sdk-go/contract" "github.com/FastLane-Labs/atlas-sdk-go/types" "github.com/FastLane-Labs/atlas-sdk-go/utils" + "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" ) -func (sdk *AtlasSdk) SetUserNonce(chainId uint64, userOp *types.UserOperation) error { - nonce, err := sdk.GetUserNextNonce(chainId, userOp.From, userOp.CallConfig) +const ( + getUserNextNonceFunction = "getUserNextNonce" + getUserNextNonSeqNonceAfterFunction = "getUserNextNonSeqNonceAfter" + getDAppNextNonceFunction = "getDAppNextNonce" +) + +func (sdk *AtlasSdk) SetUserNonce(chainId uint64, version *string, userOp *types.UserOperation) error { + nonce, err := sdk.GetUserNextNonce(chainId, version, userOp.From, userOp.CallConfig) if err != nil { return err } @@ -20,72 +29,146 @@ func (sdk *AtlasSdk) SetUserNonce(chainId uint64, userOp *types.UserOperation) e return nil } -func (sdk *AtlasSdk) GetUserNextNonce(chainId uint64, user common.Address, callConfig uint32) (*big.Int, error) { - contract, ok := sdk.atlasVerificationContract[chainId] +func (sdk *AtlasSdk) GetUserNextNonce(chainId uint64, version *string, user common.Address, callConfig uint32) (*big.Int, error) { + ethClient, err := sdk.getEthClient(chainId) + if err != nil { + return nil, err + } + + atlasVerificationAddr, err := config.GetAtlasVerificationAddress(chainId, version) + if err != nil { + return nil, err + } + + atlasVerificationAbi, err := contract.GetAtlasVerificationAbi(version) + if err != nil { + return nil, err + } + + v := config.GetVersion(version) + + mu, ok := sdk.noncesMu[chainId][v] if !ok { - return nil, errors.New("atlasVerification contract not found") + // This can happen if a chain config has been overridden + mu = &sdk.mu } - var ( - nonce *big.Int - err error - ) + var pData []byte - sdk.noncesMu.Lock() - defer sdk.noncesMu.Unlock() + mu.Lock() + defer mu.Unlock() if utils.FlagUserNoncesSequential(callConfig) { - callOpts, cancel := NewCallOptsWithNetworkDeadline() - defer cancel() - - nonce, err = contract.GetUserNextNonce(callOpts, user, true) + pData, err = atlasVerificationAbi.Pack(getUserNextNonceFunction, user, true) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to pack %s: %w", getUserNextNonceFunction, err) } } else { if _, ok := sdk.userLastNonSequentialNonce[chainId]; !ok { - sdk.userLastNonSequentialNonce[chainId] = make(map[common.Address]*big.Int) + sdk.userLastNonSequentialNonce[chainId] = make(map[string]map[common.Address]*big.Int) } - lastNonce := sdk.userLastNonSequentialNonce[chainId][user] + if _, ok := sdk.userLastNonSequentialNonce[chainId][v]; !ok { + sdk.userLastNonSequentialNonce[chainId][v] = make(map[common.Address]*big.Int) + } - if lastNonce == nil { - callOpts, cancel := NewCallOptsWithNetworkDeadline() - defer cancel() + lastNonce := sdk.userLastNonSequentialNonce[chainId][v][user] - nonce, err = contract.GetUserNextNonce(callOpts, user, false) + if lastNonce == nil { + pData, err = atlasVerificationAbi.Pack(getUserNextNonceFunction, user, false) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to pack %s: %w", getUserNextNonceFunction, err) } } else { - callOpts, cancel := NewCallOptsWithNetworkDeadline() - defer cancel() - - nonce, err = contract.GetUserNextNonSeqNonceAfter(callOpts, user, lastNonce) + pData, err = atlasVerificationAbi.Pack(getUserNextNonSeqNonceAfterFunction, user, lastNonce) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to pack %s: %w", getUserNextNonSeqNonceAfterFunction, err) } } + } + + ctx, cancel := NewContextWithNetworkDeadline() + defer cancel() - sdk.userLastNonSequentialNonce[chainId][user] = nonce + bData, err := ethClient.CallContract( + ctx, + ethereum.CallMsg{ + To: &atlasVerificationAddr, + Data: pData, + }, + nil, + ) + if err != nil { + return nil, fmt.Errorf("failed to call %s: %w", getUserNextNonceFunction, err) + } + + _nonce, err := atlasVerificationAbi.Unpack(getUserNextNonceFunction, bData) + if err != nil { + return nil, fmt.Errorf("failed to unpack %s: %w", getUserNextNonceFunction, err) + } + + nonce, ok := _nonce[0].(*big.Int) + if !ok { + return nil, fmt.Errorf("failed to cast %s: %w", getUserNextNonceFunction, err) + } + + if !utils.FlagUserNoncesSequential(callConfig) { + sdk.userLastNonSequentialNonce[chainId][v][user] = nonce } return nonce, nil } -func (sdk *AtlasSdk) GetDAppNextNonce(chainId uint64, dApp common.Address, callConfig uint32) (*big.Int, error) { +func (sdk *AtlasSdk) GetDAppNextNonce(chainId uint64, version *string, dApp common.Address, callConfig uint32) (*big.Int, error) { if !utils.FlagDappNoncesSequential(callConfig) { // Nonce not needed for non-sequential dapp calls return new(big.Int).Set(common.Big0), nil } - contract, ok := sdk.atlasVerificationContract[chainId] - if !ok { - return nil, errors.New("atlasVerification contract not found") + ethClient, err := sdk.getEthClient(chainId) + if err != nil { + return nil, err + } + + atlasVerificationAddr, err := config.GetAtlasVerificationAddress(chainId, version) + if err != nil { + return nil, err + } + + atlasVerificationAbi, err := contract.GetAtlasVerificationAbi(version) + if err != nil { + return nil, err + } + + pData, err := atlasVerificationAbi.Pack(getDAppNextNonceFunction, dApp) + if err != nil { + return nil, fmt.Errorf("failed to pack %s: %w", getDAppNextNonceFunction, err) } - callOpts, cancel := NewCallOptsWithNetworkDeadline() + ctx, cancel := NewContextWithNetworkDeadline() defer cancel() - return contract.GetDAppNextNonce(callOpts, dApp) + bData, err := ethClient.CallContract( + ctx, + ethereum.CallMsg{ + To: &atlasVerificationAddr, + Data: pData, + }, + nil, + ) + if err != nil { + return nil, fmt.Errorf("failed to call %s: %w", getDAppNextNonceFunction, err) + } + + _nonce, err := atlasVerificationAbi.Unpack(getDAppNextNonceFunction, bData) + if err != nil { + return nil, fmt.Errorf("failed to unpack %s: %w", getDAppNextNonceFunction, err) + } + + nonce, ok := _nonce[0].(*big.Int) + if !ok { + return nil, fmt.Errorf("failed to cast %s: %w", getDAppNextNonceFunction, err) + } + + return nonce, nil } diff --git a/core/sdk.go b/core/sdk.go index e52e438..11a6af1 100644 --- a/core/sdk.go +++ b/core/sdk.go @@ -6,10 +6,6 @@ import ( "sync" "github.com/FastLane-Labs/atlas-sdk-go/config" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification" - "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator" - "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethclient" ) @@ -17,39 +13,25 @@ import ( type AtlasSdk struct { ethClient map[uint64]*ethclient.Client - atlasContract map[uint64]*atlas.Atlas - atlasVerificationContract map[uint64]*atlasverification.AtlasVerification - simulatorContract map[uint64]*simulator.Simulator - sorterContract map[uint64]*sorter.Sorter + userLastNonSequentialNonce map[uint64]map[string]map[common.Address]*big.Int + noncesMu map[uint64]map[string]*sync.Mutex - userLastNonSequentialNonce map[uint64]map[common.Address]*big.Int - noncesMu sync.Mutex - - atlasAddress map[uint64]common.Address - atlasVerificationAddress map[uint64]common.Address - simulatorAddress map[uint64]common.Address - sorterAddress map[uint64]common.Address + mu sync.Mutex } -func NewAtlasSdk(ethClient []*ethclient.Client, chainOverrides map[uint64]*config.ChainConfig) (*AtlasSdk, error) { +func NewAtlasSdk(ethClient []*ethclient.Client, chainOverrides map[uint64]map[string]*config.ChainConfig) (*AtlasSdk, error) { for chainId, chainConf := range chainOverrides { - err := config.OverrideChainConfig(chainId, chainConf) - if err != nil { - return nil, err + for version, conf := range chainConf { + if err := config.OverrideChainConfig(chainId, &version, conf); err != nil { + return nil, err + } } } sdk := &AtlasSdk{ ethClient: make(map[uint64]*ethclient.Client), - atlasContract: make(map[uint64]*atlas.Atlas), - atlasVerificationContract: make(map[uint64]*atlasverification.AtlasVerification), - simulatorContract: make(map[uint64]*simulator.Simulator), - sorterContract: make(map[uint64]*sorter.Sorter), - userLastNonSequentialNonce: make(map[uint64]map[common.Address]*big.Int), - atlasAddress: make(map[uint64]common.Address), - atlasVerificationAddress: make(map[uint64]common.Address), - simulatorAddress: make(map[uint64]common.Address), - sorterAddress: make(map[uint64]common.Address), + userLastNonSequentialNonce: make(map[uint64]map[string]map[common.Address]*big.Int), + noncesMu: make(map[uint64]map[string]*sync.Mutex), } for _, client := range ethClient { @@ -61,42 +43,13 @@ func NewAtlasSdk(ethClient []*ethclient.Client, chainOverrides map[uint64]*confi return nil, err } - chainConf, err := config.GetChainConfig(chainId.Uint64()) - if err != nil { - return nil, err - } - - atlasContract, err := atlas.NewAtlas(chainConf.Contract.Atlas, client) - if err != nil { - return nil, fmt.Errorf("failed to create atlas contract: %w", err) - } - - atlasVerificationContract, err := atlasverification.NewAtlasVerification(chainConf.Contract.AtlasVerification, client) - if err != nil { - return nil, fmt.Errorf("failed to create atlas verification contract: %w", err) - } - - simulatorContract, err := simulator.NewSimulator(chainConf.Contract.Simulator, client) - if err != nil { - return nil, fmt.Errorf("failed to create simulator contract: %w", err) - } - - sorterContract, err := sorter.NewSorter(chainConf.Contract.Sorter, client) - if err != nil { - return nil, fmt.Errorf("failed to create sorter contract: %w", err) - } - chainIdUint64 := chainId.Uint64() sdk.ethClient[chainIdUint64] = client - sdk.atlasContract[chainIdUint64] = atlasContract - sdk.atlasVerificationContract[chainIdUint64] = atlasVerificationContract - sdk.simulatorContract[chainIdUint64] = simulatorContract - sdk.sorterContract[chainIdUint64] = sorterContract - sdk.userLastNonSequentialNonce[chainIdUint64] = make(map[common.Address]*big.Int) - sdk.atlasAddress[chainIdUint64] = chainConf.Contract.Atlas - sdk.atlasVerificationAddress[chainIdUint64] = chainConf.Contract.AtlasVerification - sdk.simulatorAddress[chainIdUint64] = chainConf.Contract.Simulator - sdk.sorterAddress[chainIdUint64] = chainConf.Contract.Sorter + + for _, version := range config.GetAllVersions() { + sdk.userLastNonSequentialNonce[chainIdUint64][version] = make(map[common.Address]*big.Int) + sdk.noncesMu[chainIdUint64][version] = &sync.Mutex{} + } } return sdk, nil @@ -110,39 +63,3 @@ func (sdk *AtlasSdk) getEthClient(chainId uint64) (*ethclient.Client, error) { return client, nil } - -func (sdk *AtlasSdk) GetAtlasContract(chainId uint64) (*atlas.Atlas, error) { - contract, ok := sdk.atlasContract[chainId] - if !ok { - return nil, fmt.Errorf("atlas contract not found for chain id %d", chainId) - } - - return contract, nil -} - -func (sdk *AtlasSdk) GetAtlasVerificationContract(chainId uint64) (*atlasverification.AtlasVerification, error) { - contract, ok := sdk.atlasVerificationContract[chainId] - if !ok { - return nil, fmt.Errorf("atlas verification contract not found for chain id %d", chainId) - } - - return contract, nil -} - -func (sdk *AtlasSdk) GetSimulatorContract(chainId uint64) (*simulator.Simulator, error) { - contract, ok := sdk.simulatorContract[chainId] - if !ok { - return nil, fmt.Errorf("simulator contract not found for chain id %d", chainId) - } - - return contract, nil -} - -func (sdk *AtlasSdk) GetSorterContract(chainId uint64) (*sorter.Sorter, error) { - contract, ok := sdk.sorterContract[chainId] - if !ok { - return nil, fmt.Errorf("sorter contract not found for chain id %d", chainId) - } - - return contract, nil -} diff --git a/core/simulate.go b/core/simulate.go index 6b41a9b..a74dcbe 100644 --- a/core/simulate.go +++ b/core/simulate.go @@ -5,6 +5,7 @@ import ( "fmt" "math/big" + "github.com/FastLane-Labs/atlas-sdk-go/config" "github.com/FastLane-Labs/atlas-sdk-go/contract" "github.com/FastLane-Labs/atlas-sdk-go/types" "github.com/FastLane-Labs/atlas-sdk-go/utils" @@ -12,6 +13,11 @@ import ( "github.com/ethereum/go-ethereum/common" ) +const ( + simUserOperationFunction = "simUserOperation" + simSolverCallFunction = "simSolverCall" +) + var ( SimulationResult = map[uint8]string{ 0: "Unknown", @@ -149,25 +155,31 @@ func (e *SolverOperationSimulationError) Error() string { ) } -func (sdk *AtlasSdk) SimulateUserOperation(chainId uint64, userOp *types.UserOperation) *UserOperationSimulationError { - pData, err := contract.SimulatorAbi.Pack("simUserOperation", *userOp) +func (sdk *AtlasSdk) SimulateUserOperation(chainId uint64, version *string, userOp *types.UserOperation) *UserOperationSimulationError { + ethClient, err := sdk.getEthClient(chainId) if err != nil { - return &UserOperationSimulationError{err: fmt.Errorf("failed to pack simUserOperation: %w", err)} + return &UserOperationSimulationError{err: err} } - if _, ok := sdk.ethClient[chainId]; !ok { - return &UserOperationSimulationError{err: fmt.Errorf("no ethClient for chainId %d", chainId)} + simulatorAddr, err := config.GetSimulatorAddress(chainId, version) + if err != nil { + return &UserOperationSimulationError{err: err} } - simulatorAddr, ok := sdk.simulatorAddress[chainId] - if !ok { - return &UserOperationSimulationError{err: fmt.Errorf("no simulator Address for chainId %d", chainId)} + simulatorAbi, err := contract.GetSimulatorAbi(version) + if err != nil { + return &UserOperationSimulationError{err: err} + } + + pData, err := simulatorAbi.Pack(simUserOperationFunction, userOp) + if err != nil { + return &UserOperationSimulationError{err: fmt.Errorf("failed to pack %s: %w", simUserOperationFunction, err)} } ctx, cancel := NewContextWithNetworkDeadline() defer cancel() - bData, err := sdk.ethClient[chainId].CallContract( + bData, err := ethClient.CallContract( ctx, ethereum.CallMsg{ To: &simulatorAddr, @@ -178,12 +190,12 @@ func (sdk *AtlasSdk) SimulateUserOperation(chainId uint64, userOp *types.UserOpe }, nil) if err != nil { - return &UserOperationSimulationError{err: fmt.Errorf("failed to call simUserOperation: %w", err)} + return &UserOperationSimulationError{err: fmt.Errorf("failed to call %s: %w", simUserOperationFunction, err)} } - validOp, err := contract.SimulatorAbi.Unpack("simUserOperation", bData) + validOp, err := simulatorAbi.Unpack(simUserOperationFunction, bData) if err != nil { - return &UserOperationSimulationError{err: fmt.Errorf("failed to unpack simUserOperation: %w", err)} + return &UserOperationSimulationError{err: fmt.Errorf("failed to unpack %s: %w", simUserOperationFunction, err)} } if !validOp[0].(bool) { @@ -199,11 +211,27 @@ func (sdk *AtlasSdk) SimulateUserOperation(chainId uint64, userOp *types.UserOpe return nil } -func (sdk *AtlasSdk) SimulateSolverOperation(chainId uint64, userOp *types.UserOperation, solverOp *types.SolverOperation) *SolverOperationSimulationError { - userOpHash, err := userOp.Hash(utils.FlagTrustedOpHash(userOp.CallConfig), chainId) +func (sdk *AtlasSdk) SimulateSolverOperation(chainId uint64, version *string, userOp *types.UserOperation, solverOp *types.SolverOperation) *SolverOperationSimulationError { + ethClient, err := sdk.getEthClient(chainId) + if err != nil { + return &SolverOperationSimulationError{err: err} + } + + simulatorAddr, err := config.GetSimulatorAddress(chainId, version) + if err != nil { + return &SolverOperationSimulationError{err: err} + } + + simulatorAbi, err := contract.GetSimulatorAbi(version) + if err != nil { + return &SolverOperationSimulationError{err: err} + } + + userOpHash, err := userOp.Hash(utils.FlagTrustedOpHash(userOp.CallConfig), chainId, version) if err != nil { return &SolverOperationSimulationError{err: fmt.Errorf("failed to hash userOp: %w", err)} } + dAppOp := &types.DAppOperation{ From: common.Address{}, To: userOp.To, @@ -224,9 +252,9 @@ func (sdk *AtlasSdk) SimulateSolverOperation(chainId uint64, userOp *types.UserO dAppOp.CallChainHash = callChainHash } - pData, err := contract.SimulatorAbi.Pack("simSolverCall", *userOp, *solverOp, *dAppOp) + pData, err := simulatorAbi.Pack(simSolverCallFunction, userOp, solverOp, dAppOp) if err != nil { - return &SolverOperationSimulationError{err: fmt.Errorf("failed to pack simSolverCall: %w", err)} + return &SolverOperationSimulationError{err: fmt.Errorf("failed to pack %s: %w", simSolverCallFunction, err)} } gasPrice := new(big.Int).Set(userOp.MaxFeePerGas) @@ -234,19 +262,10 @@ func (sdk *AtlasSdk) SimulateSolverOperation(chainId uint64, userOp *types.UserO gasPrice.Set(solverOp.MaxFeePerGas) } - if _, ok := sdk.ethClient[chainId]; !ok { - return &SolverOperationSimulationError{err: fmt.Errorf("no ethClient for chainId %d", chainId)} - } - - simulatorAddr, ok := sdk.simulatorAddress[chainId] - if !ok { - return &SolverOperationSimulationError{err: fmt.Errorf("no simulator Address for chainId %d", chainId)} - } - ctx, cancel := NewContextWithNetworkDeadline() defer cancel() - bData, err := sdk.ethClient[chainId].CallContract( + bData, err := ethClient.CallContract( ctx, ethereum.CallMsg{ To: &simulatorAddr, @@ -258,12 +277,12 @@ func (sdk *AtlasSdk) SimulateSolverOperation(chainId uint64, userOp *types.UserO nil, ) if err != nil { - return &SolverOperationSimulationError{err: fmt.Errorf("failed to call simSolverCall: %w", err)} + return &SolverOperationSimulationError{err: fmt.Errorf("failed to call %s: %w", simSolverCallFunction, err)} } - validOp, err := contract.SimulatorAbi.Unpack("simSolverCall", bData) + validOp, err := simulatorAbi.Unpack(simSolverCallFunction, bData) if err != nil { - return &SolverOperationSimulationError{err: fmt.Errorf("failed to unpack simSolverCall: %w pData %s", err, hex.EncodeToString(pData))} + return &SolverOperationSimulationError{err: fmt.Errorf("failed to unpack %s: %w pData %s", simSolverCallFunction, err, hex.EncodeToString(pData))} } if !validOp[0].(bool) { diff --git a/core/sorter.go b/core/sorter.go index f98454b..992c5fb 100644 --- a/core/sorter.go +++ b/core/sorter.go @@ -1,69 +1,65 @@ package core import ( - "errors" + "fmt" - "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter" + "github.com/FastLane-Labs/atlas-sdk-go/config" + "github.com/FastLane-Labs/atlas-sdk-go/contract" "github.com/FastLane-Labs/atlas-sdk-go/types" + "github.com/ethereum/go-ethereum" ) -func (sdk *AtlasSdk) SortSolverOperations(chainId uint64, userOp *types.UserOperation, solverOps types.SolverOperations) (types.SolverOperations, error) { - contract, ok := sdk.sorterContract[chainId] - if !ok { - return nil, errors.New("sorter contract not found") +const ( + sortBidsFunction = "sortBids" +) + +func (sdk *AtlasSdk) SortSolverOperations(chainId uint64, version *string, userOp *types.UserOperation, solverOps types.SolverOperations) (types.SolverOperations, error) { + ethClient, err := sdk.getEthClient(chainId) + if err != nil { + return nil, err } - if len(solverOps) == 0 { - return solverOps, nil + sorterAddr, err := config.GetSorterAddress(chainId, version) + if err != nil { + return nil, err + } + + sorterAbi, err := contract.GetSorterAbi(version) + if err != nil { + return nil, err } userOp.Sanitize() + solverOps.Sanitize() - fmtSolverOps := make([]sorter.SolverOperation, len(solverOps)) - for i, solverOp := range solverOps { - solverOp.Sanitize() - fmtSolverOps[i] = sorter.SolverOperation{ - From: solverOp.From, - To: solverOp.To, - Value: solverOp.Value, - Gas: solverOp.Gas, - MaxFeePerGas: solverOp.MaxFeePerGas, - Deadline: solverOp.Deadline, - Solver: solverOp.Solver, - Control: solverOp.Control, - UserOpHash: solverOp.UserOpHash, - BidToken: solverOp.BidToken, - BidAmount: solverOp.BidAmount, - Data: solverOp.Data, - Signature: solverOp.Signature, - } + pData, err := sorterAbi.Pack(sortBidsFunction, userOp, solverOps) + if err != nil { + return nil, fmt.Errorf("failed to pack %s: %w", sortBidsFunction, err) } - callOpts, cancel := NewCallOptsWithNetworkDeadline() + ctx, cancel := NewContextWithNetworkDeadline() defer cancel() - fmtSortedSolverOps, err := contract.SortBids(callOpts, sorter.UserOperation(*userOp), fmtSolverOps) + bData, err := ethClient.CallContract( + ctx, + ethereum.CallMsg{ + To: &sorterAddr, + Data: pData, + }, + nil, + ) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to call %s: %w", sortBidsFunction, err) } - sortedSolverOps := make(types.SolverOperations, len(fmtSortedSolverOps)) - for i, fmtSortedSolverOp := range fmtSortedSolverOps { - sortedSolverOps[i] = &types.SolverOperation{ - From: fmtSortedSolverOp.From, - To: fmtSortedSolverOp.To, - Value: fmtSortedSolverOp.Value, - Gas: fmtSortedSolverOp.Gas, - MaxFeePerGas: fmtSortedSolverOp.MaxFeePerGas, - Deadline: fmtSortedSolverOp.Deadline, - Solver: fmtSortedSolverOp.Solver, - Control: fmtSortedSolverOp.Control, - UserOpHash: fmtSortedSolverOp.UserOpHash, - BidToken: fmtSortedSolverOp.BidToken, - BidAmount: fmtSortedSolverOp.BidAmount, - Data: fmtSortedSolverOp.Data, - Signature: fmtSortedSolverOp.Signature, - } + _sortedSolverOps, err := sorterAbi.Unpack(sortBidsFunction, bData) + if err != nil { + return nil, fmt.Errorf("failed to unpack %s: %w", sortBidsFunction, err) + } + + sortedSolverOps, ok := _sortedSolverOps[0].(types.SolverOperations) + if !ok { + return nil, fmt.Errorf("failed to cast %s: %w", sortBidsFunction, err) } return sortedSolverOps, nil diff --git a/types/dapp_operation.go b/types/dapp_operation.go index 233e25f..f6fb8ba 100644 --- a/types/dapp_operation.go +++ b/types/dapp_operation.go @@ -89,8 +89,8 @@ func (d *DAppOperation) EncodeToRaw() *DAppOperationRaw { } } -func (d *DAppOperation) Hash(chainId uint64) (common.Hash, error) { - eip712Domain, err := config.GetEip712Domain(chainId) +func (d *DAppOperation) Hash(chainId uint64, version *string) (common.Hash, error) { + eip712Domain, err := config.GetEip712Domain(chainId, version) if err != nil { return common.Hash{}, err } @@ -109,12 +109,12 @@ func (d *DAppOperation) Hash(chainId uint64) (common.Hash, error) { return common.BytesToHash(hash), nil } -func (d *DAppOperation) ValidateSignature(chainId uint64) error { +func (d *DAppOperation) ValidateSignature(chainId uint64, version *string) error { if len(d.Signature) != 65 { return errors.New("invalid signature length") } - dAppOpHash, err := d.Hash(chainId) + dAppOpHash, err := d.Hash(chainId, version) if err != nil { return err } diff --git a/types/dapp_operation_test.go b/types/dapp_operation_test.go index 03c820e..491c126 100644 --- a/types/dapp_operation_test.go +++ b/types/dapp_operation_test.go @@ -27,7 +27,7 @@ func TestDAppOperationHash(t *testing.T) { dAppOp := generateDAppOperation() want := common.HexToHash("0x19f8a2e775a072f45728d1d87bcfff85ca5fecdf674f261af2a5c8c70b37a453") - result, err := dAppOp.Hash(0) + result, err := dAppOp.Hash(0, nil) if err != nil { t.Errorf("DAppOperation.Hash() error = %v", err) } @@ -44,7 +44,7 @@ func TestDAppOperationCheckSignature(t *testing.T) { dAppOp.From = common.HexToAddress("0xB764B6545d283C0E547952763F8a843394295da1") dAppOp.Signature = common.FromHex("0x741bd1cc70e34a39d763ae23d0d94c6a9156b10ba9a4cead3e847d4f15ad6edf4a7a60b875f1cb1795358b7a395b422659b7336f2f3a90453f8c2a16369e69d81c") - if err := dAppOp.ValidateSignature(0); err != nil { + if err := dAppOp.ValidateSignature(0, nil); err != nil { t.Errorf("DAppOperation.checkSignature() error = %v", err) } } diff --git a/types/solver_operation.go b/types/solver_operation.go index 172377a..6db0409 100644 --- a/types/solver_operation.go +++ b/types/solver_operation.go @@ -160,8 +160,8 @@ func (s *SolverOperation) EncodeToRaw() *SolverOperationRaw { } } -func (s *SolverOperation) Hash(chainId uint64) (common.Hash, error) { - eip712Domain, err := config.GetEip712Domain(chainId) +func (s *SolverOperation) Hash(chainId uint64, version *string) (common.Hash, error) { + eip712Domain, err := config.GetEip712Domain(chainId, version) if err != nil { return common.Hash{}, err } @@ -185,12 +185,12 @@ func (s *SolverOperation) AbiEncode() ([]byte, error) { return solverOpArgs.Pack(&s) } -func (s *SolverOperation) ValidateSignature(chainId uint64) error { +func (s *SolverOperation) ValidateSignature(chainId uint64, version *string) error { if len(s.Signature) != 65 { return errors.New("invalid signature length") } - solverOpHash, err := s.Hash(chainId) + solverOpHash, err := s.Hash(chainId, version) if err != nil { return err } diff --git a/types/solver_operation_test.go b/types/solver_operation_test.go index 2ecd47e..77a6ee3 100644 --- a/types/solver_operation_test.go +++ b/types/solver_operation_test.go @@ -31,7 +31,7 @@ func TestSolverOperationHash(t *testing.T) { solverOp := generateSolverOperation() want := common.HexToHash("0x36ff5301f530e9175cca32acbac7bc6798d5be0c04372ba3f05149b2455c5405") - result, err := solverOp.Hash(0) + result, err := solverOp.Hash(0, nil) if err != nil { t.Errorf("SolverOperation.Hash() error = %v", err) } @@ -64,7 +64,7 @@ func TestSolverOperationCheckSignature(t *testing.T) { solverOp.From = common.HexToAddress("0xB764B6545d283C0E547952763F8a843394295da1") solverOp.Signature = common.FromHex("0x8e8d89974eb665dea669d922ad26d055b835d426fb60885a40d439ea213deb8204ce569ad60caa3fe8892656fa189a28ab2c71b02135b9b9d746d6ac12b87b6c1c") - if err := solverOp.ValidateSignature(0); err != nil { + if err := solverOp.ValidateSignature(0, nil); err != nil { t.Errorf("DAppOperation.checkSignature() error = %v", err) } } diff --git a/types/test_test.go b/types/test_test.go index 8423d2b..e558b00 100644 --- a/types/test_test.go +++ b/types/test_test.go @@ -28,7 +28,8 @@ var ( ) func TestMain(m *testing.M) { - if err := config.OverrideChainConfig(0, unitTestChainConfig); err != nil { + version := config.AtlasVLatest + if err := config.OverrideChainConfig(0, &version, unitTestChainConfig); err != nil { panic(err) } diff --git a/types/user_operation.go b/types/user_operation.go index 65c481d..10a5779 100644 --- a/types/user_operation.go +++ b/types/user_operation.go @@ -157,8 +157,8 @@ func (u *UserOperation) EncodeToRaw() *UserOperationRaw { } } -func (u *UserOperation) Hash(trusted bool, chainId uint64) (common.Hash, error) { - eip712Domain, err := config.GetEip712Domain(chainId) +func (u *UserOperation) Hash(trusted bool, chainId uint64, version *string) (common.Hash, error) { + eip712Domain, err := config.GetEip712Domain(chainId, version) if err != nil { return common.Hash{}, err } @@ -182,12 +182,12 @@ func (u *UserOperation) AbiEncode() ([]byte, error) { return userOpArgs.Pack(&u) } -func (u *UserOperation) ValidateSignature(chainId uint64) error { +func (u *UserOperation) ValidateSignature(chainId uint64, version *string) error { if len(u.Signature) != 65 { return errors.New("invalid signature length") } - userOpHash, err := u.Hash(false, chainId) + userOpHash, err := u.Hash(false, chainId, version) if err != nil { return err } @@ -292,8 +292,8 @@ type UserOperationPartialRaw struct { From common.Address `json:"from,omitempty"` } -func NewUserOperationPartialRaw(chainId uint64, userOp *UserOperation, hints []common.Address) (*UserOperationPartialRaw, error) { - userOpHash, err := userOp.Hash(utils.FlagTrustedOpHash(userOp.CallConfig), chainId) +func NewUserOperationPartialRaw(chainId uint64, version *string, userOp *UserOperation, hints []common.Address) (*UserOperationPartialRaw, error) { + userOpHash, err := userOp.Hash(utils.FlagTrustedOpHash(userOp.CallConfig), chainId, version) if err != nil { return nil, err } diff --git a/types/user_operation_test.go b/types/user_operation_test.go index 75678ba..4276da6 100644 --- a/types/user_operation_test.go +++ b/types/user_operation_test.go @@ -31,7 +31,7 @@ func TestUserOperationHashDefault(t *testing.T) { userOp := generateUserOperation() want := common.HexToHash("0x021a7f3f62347f1f3d1163aa8eb9fc965e87556aede03c7182ec05bc60311b64") - result, err := userOp.Hash(false, 0) + result, err := userOp.Hash(false, 0, nil) if err != nil { t.Errorf("UserOperation.Hash() error = %v", err) } @@ -47,7 +47,7 @@ func TestUserOperationHashTrusted(t *testing.T) { userOp := generateUserOperation() want := common.HexToHash("0x96aa1212cae2645ba1b8bf8014abccdfe9a60c16f86e21f82753d4cecc0b6089") - result, err := userOp.Hash(true, 0) + result, err := userOp.Hash(true, 0, nil) if err != nil { t.Errorf("UserOperation.Hash() error = %v", err) } @@ -80,7 +80,7 @@ func TestUserOperationValidateSignature(t *testing.T) { userOp.From = common.HexToAddress("0xB764B6545d283C0E547952763F8a843394295da1") userOp.Signature = common.FromHex("0x63e05429d1f5253ceebddf5f709c33d211592798cc4f89af302ade417e1de0173dd2c50d1bccc996e68839491a3539c3400c8b0721c29c236a3027f1dc274e151b") - if err := userOp.ValidateSignature(0); err != nil { + if err := userOp.ValidateSignature(0, nil); err != nil { t.Errorf("DAppOperation.checkSignature() error = %v", err) } } From b1c109151055fb5a2de52578cd1c5dcc00a682d0 Mon Sep 17 00:00:00 2001 From: jj1980a Date: Wed, 20 Nov 2024 10:45:49 +0400 Subject: [PATCH 2/6] fix potential nil map --- core/sdk.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/sdk.go b/core/sdk.go index 11a6af1..c6c859a 100644 --- a/core/sdk.go +++ b/core/sdk.go @@ -47,7 +47,16 @@ func NewAtlasSdk(ethClient []*ethclient.Client, chainOverrides map[uint64]map[st sdk.ethClient[chainIdUint64] = client for _, version := range config.GetAllVersions() { + if _, ok := sdk.userLastNonSequentialNonce[chainIdUint64]; !ok { + sdk.userLastNonSequentialNonce[chainIdUint64] = make(map[string]map[common.Address]*big.Int) + } + sdk.userLastNonSequentialNonce[chainIdUint64][version] = make(map[common.Address]*big.Int) + + if _, ok := sdk.noncesMu[chainIdUint64]; !ok { + sdk.noncesMu[chainIdUint64] = make(map[string]*sync.Mutex) + } + sdk.noncesMu[chainIdUint64][version] = &sync.Mutex{} } } From 60fb97f9fe007adc3f2008795a8c8f6042d6eb04 Mon Sep 17 00:00:00 2001 From: jj1980a Date: Sat, 23 Nov 2024 08:46:06 +0400 Subject: [PATCH 3/6] fix solver operations type in metacall --- core/atlas.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/atlas.go b/core/atlas.go index 55f6626..d005b98 100644 --- a/core/atlas.go +++ b/core/atlas.go @@ -34,13 +34,18 @@ func (sdk *AtlasSdk) Metacall(chainId uint64, version *string, transactOpts *bin dAppOp.Sanitize() var ( - contract = bind.NewBoundContract(atlasAddr, *atlasAbi, ethClient, ethClient, ethClient) - params []interface{} + contract = bind.NewBoundContract(atlasAddr, *atlasAbi, ethClient, ethClient, ethClient) + _solverOps = make([]types.SolverOperation, len(solverOps)) + params []interface{} ) + for i, op := range solverOps { + _solverOps[i] = *op + } + switch config.GetVersion(version) { case config.AtlasV_1_0_0, config.AtlasV_1_0_1: - params = append(params, userOp, solverOps, dAppOp) + params = append(params, userOp, _solverOps, dAppOp) case config.AtlasV_1_1_0: var _gasRefundBeneficiary common.Address @@ -48,7 +53,7 @@ func (sdk *AtlasSdk) Metacall(chainId uint64, version *string, transactOpts *bin _gasRefundBeneficiary = *gasRefundBeneficiary } - params = append(params, userOp, solverOps, dAppOp, _gasRefundBeneficiary) + params = append(params, userOp, _solverOps, dAppOp, _gasRefundBeneficiary) } return contract.Transact(transactOpts, metacallFunction, params...) From c5621e03176dd081c065e573249ee34a80972136 Mon Sep 17 00:00:00 2001 From: jj1980a Date: Sat, 23 Nov 2024 09:16:59 +0400 Subject: [PATCH 4/6] update chain config url --- config/download.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/download.go b/config/download.go index aad4c98..6d5594b 100644 --- a/config/download.go +++ b/config/download.go @@ -7,8 +7,7 @@ import ( ) const ( - // ChainConfigUrl = "https://raw.githubusercontent.com/FastLane-Labs/atlas-config/refs/heads/main/configs/chain-config.json" - ChainConfigUrl = "https://raw.githubusercontent.com/FastLane-Labs/atlas-config/refs/heads/atlas-multi-version/configs/chain-config.json" + ChainConfigUrl = "https://raw.githubusercontent.com/FastLane-Labs/atlas-config/refs/heads/main/configs/chain-configs-multi-version.json" ) func downloadChainConfig() (map[uint64]map[string]*ChainConfig, error) { From 217ed185d3ad787f8152ef4031beecc0a7605e6b Mon Sep 17 00:00:00 2001 From: jj1980a Date: Wed, 27 Nov 2024 13:13:08 +0400 Subject: [PATCH 5/6] rename atlas versions --- Makefile | 24 ++--- config/chain.go | 10 +- contract/abi.go | 96 +++++++++---------- contract/atlas/{1.0.0 => 1.0}/abi.json | 0 contract/atlas/{1.0.0 => 1.0}/atlas.go | 2 +- contract/atlas/{1.0.1 => 1.1}/abi.json | 0 contract/atlas/{1.0.1 => 1.1}/atlas.go | 2 +- contract/atlas/{1.1.0 => 1.2}/abi.json | 0 contract/atlas/{1.1.0 => 1.2}/atlas.go | 2 +- .../atlasverification/{1.0.0 => 1.0}/abi.json | 0 .../{1.0.0 => 1.0}/atlasverification.go | 2 +- .../atlasverification/{1.0.1 => 1.1}/abi.json | 0 .../{1.0.1 => 1.1}/atlasverification.go | 2 +- .../atlasverification/{1.1.0 => 1.2}/abi.json | 0 .../{1.1.0 => 1.2}/atlasverification.go | 2 +- contract/simulator/{1.0.0 => 1.0}/abi.json | 0 .../simulator/{1.0.0 => 1.0}/simulator.go | 2 +- contract/simulator/{1.0.1 => 1.1}/abi.json | 0 .../simulator/{1.0.1 => 1.1}/simulator.go | 2 +- contract/simulator/{1.1.0 => 1.2}/abi.json | 0 .../simulator/{1.1.0 => 1.2}/simulator.go | 2 +- contract/sorter/{1.0.0 => 1.0}/abi.json | 0 contract/sorter/{1.0.0 => 1.0}/sorter.go | 2 +- contract/sorter/{1.0.1 => 1.1}/abi.json | 0 contract/sorter/{1.0.1 => 1.1}/sorter.go | 2 +- contract/sorter/{1.1.0 => 1.2}/abi.json | 0 contract/sorter/{1.1.0 => 1.2}/sorter.go | 2 +- core/atlas.go | 4 +- 28 files changed, 79 insertions(+), 79 deletions(-) rename contract/atlas/{1.0.0 => 1.0}/abi.json (100%) rename contract/atlas/{1.0.0 => 1.0}/atlas.go (99%) rename contract/atlas/{1.0.1 => 1.1}/abi.json (100%) rename contract/atlas/{1.0.1 => 1.1}/atlas.go (99%) rename contract/atlas/{1.1.0 => 1.2}/abi.json (100%) rename contract/atlas/{1.1.0 => 1.2}/atlas.go (99%) rename contract/atlasverification/{1.0.0 => 1.0}/abi.json (100%) rename contract/atlasverification/{1.0.0 => 1.0}/atlasverification.go (99%) rename contract/atlasverification/{1.0.1 => 1.1}/abi.json (100%) rename contract/atlasverification/{1.0.1 => 1.1}/atlasverification.go (99%) rename contract/atlasverification/{1.1.0 => 1.2}/abi.json (100%) rename contract/atlasverification/{1.1.0 => 1.2}/atlasverification.go (99%) rename contract/simulator/{1.0.0 => 1.0}/abi.json (100%) rename contract/simulator/{1.0.0 => 1.0}/simulator.go (99%) rename contract/simulator/{1.0.1 => 1.1}/abi.json (100%) rename contract/simulator/{1.0.1 => 1.1}/simulator.go (99%) rename contract/simulator/{1.1.0 => 1.2}/abi.json (100%) rename contract/simulator/{1.1.0 => 1.2}/simulator.go (99%) rename contract/sorter/{1.0.0 => 1.0}/abi.json (100%) rename contract/sorter/{1.0.0 => 1.0}/sorter.go (99%) rename contract/sorter/{1.0.1 => 1.1}/abi.json (100%) rename contract/sorter/{1.0.1 => 1.1}/sorter.go (99%) rename contract/sorter/{1.1.0 => 1.2}/abi.json (100%) rename contract/sorter/{1.1.0 => 1.2}/sorter.go (99%) diff --git a/Makefile b/Makefile index b85226f..6d5c15e 100644 --- a/Makefile +++ b/Makefile @@ -5,20 +5,20 @@ test: $(GOTEST) --timeout 5m $(TESTALL) contracts-bindings: - abigen --abi ./contract/atlas/1.0.0/abi.json --pkg atlas_1_0_0 --type Atlas --out ./contract/atlas/1.0.0/atlas.go - abigen --abi ./contract/atlas/1.0.1/abi.json --pkg atlas_1_0_1 --type Atlas --out ./contract/atlas/1.0.1/atlas.go - abigen --abi ./contract/atlas/1.1.0/abi.json --pkg atlas_1_1_0 --type Atlas --out ./contract/atlas/1.1.0/atlas.go + abigen --abi ./contract/atlas/1.0/abi.json --pkg atlas_1_0 --type Atlas --out ./contract/atlas/1.0/atlas.go + abigen --abi ./contract/atlas/1.1/abi.json --pkg atlas_1_1 --type Atlas --out ./contract/atlas/1.1/atlas.go + abigen --abi ./contract/atlas/1.2/abi.json --pkg atlas_1_2 --type Atlas --out ./contract/atlas/1.2/atlas.go - abigen --abi ./contract/atlasverification/1.0.0/abi.json --pkg atlasverification_1_0_0 --type AtlasVerification --out ./contract/atlasverification/1.0.0/atlasverification.go - abigen --abi ./contract/atlasverification/1.0.1/abi.json --pkg atlasverification_1_0_1 --type AtlasVerification --out ./contract/atlasverification/1.0.1/atlasverification.go - abigen --abi ./contract/atlasverification/1.1.0/abi.json --pkg atlasverification_1_1_0 --type AtlasVerification --out ./contract/atlasverification/1.1.0/atlasverification.go + abigen --abi ./contract/atlasverification/1.0/abi.json --pkg atlasverification_1_0 --type AtlasVerification --out ./contract/atlasverification/1.0/atlasverification.go + abigen --abi ./contract/atlasverification/1.1/abi.json --pkg atlasverification_1_1 --type AtlasVerification --out ./contract/atlasverification/1.1/atlasverification.go + abigen --abi ./contract/atlasverification/1.2/abi.json --pkg atlasverification_1_2 --type AtlasVerification --out ./contract/atlasverification/1.2/atlasverification.go - abigen --abi ./contract/simulator/1.0.0/abi.json --pkg simulator_1_0_0 --type Simulator --out ./contract/simulator/1.0.0/simulator.go - abigen --abi ./contract/simulator/1.0.1/abi.json --pkg simulator_1_0_1 --type Simulator --out ./contract/simulator/1.0.1/simulator.go - abigen --abi ./contract/simulator/1.1.0/abi.json --pkg simulator_1_1_0 --type Simulator --out ./contract/simulator/1.1.0/simulator.go + abigen --abi ./contract/simulator/1.0/abi.json --pkg simulator_1_0 --type Simulator --out ./contract/simulator/1.0/simulator.go + abigen --abi ./contract/simulator/1.1/abi.json --pkg simulator_1_1 --type Simulator --out ./contract/simulator/1.1/simulator.go + abigen --abi ./contract/simulator/1.2/abi.json --pkg simulator_1_2 --type Simulator --out ./contract/simulator/1.2/simulator.go - abigen --abi ./contract/sorter/1.0.0/abi.json --pkg sorter_1_0_0 --type Sorter --out ./contract/sorter/1.0.0/sorter.go - abigen --abi ./contract/sorter/1.0.1/abi.json --pkg sorter_1_0_1 --type Sorter --out ./contract/sorter/1.0.1/sorter.go - abigen --abi ./contract/sorter/1.1.0/abi.json --pkg sorter_1_1_0 --type Sorter --out ./contract/sorter/1.1.0/sorter.go + abigen --abi ./contract/sorter/1.0/abi.json --pkg sorter_1_0 --type Sorter --out ./contract/sorter/1.0/sorter.go + abigen --abi ./contract/sorter/1.1/abi.json --pkg sorter_1_1 --type Sorter --out ./contract/sorter/1.1/sorter.go + abigen --abi ./contract/sorter/1.2/abi.json --pkg sorter_1_2 --type Sorter --out ./contract/sorter/1.2/sorter.go abigen --abi ./contract/dappcontrol/abi.json --pkg dappcontrol --type DAppControl --out ./contract/dappcontrol/dappcontrol.go diff --git a/config/chain.go b/config/chain.go index ce7c43c..215f452 100644 --- a/config/chain.go +++ b/config/chain.go @@ -23,10 +23,10 @@ type ChainConfig struct { } const ( - AtlasV_1_0_0 = "1.0.0" - AtlasV_1_0_1 = "1.0.1" - AtlasV_1_1_0 = "1.1.0" - AtlasVLatest = AtlasV_1_1_0 + AtlasV_1_0 = "1.0" + AtlasV_1_1 = "1.1" + AtlasV_1_2 = "1.2" + AtlasVLatest = AtlasV_1_2 ) var ( @@ -35,7 +35,7 @@ var ( initOnce sync.Once mu sync.RWMutex - allVersions = []string{AtlasV_1_0_0, AtlasV_1_0_1, AtlasV_1_1_0} + allVersions = []string{AtlasV_1_0, AtlasV_1_1, AtlasV_1_2} ) func initChainConfig() error { diff --git a/contract/abi.go b/contract/abi.go index 21929ec..bc475ec 100644 --- a/contract/abi.go +++ b/contract/abi.go @@ -6,41 +6,41 @@ import ( "github.com/FastLane-Labs/atlas-sdk-go/config" "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.0.0" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.0.1" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.2" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.0.0" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.0.1" - "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.2" - "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.0.0" - "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.0.1" - "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.2" - "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.0.0" - "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.0.1" - "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.0" + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.1" + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.2" "github.com/FastLane-Labs/atlas-sdk-go/contract/dappcontrol" ) var ( - atlas_1_0_0_Abi, _ = atlas_1_0_0.AtlasMetaData.GetAbi() - atlas_1_0_1_Abi, _ = atlas_1_0_1.AtlasMetaData.GetAbi() - atlas_1_1_0_Abi, _ = atlas_1_1_0.AtlasMetaData.GetAbi() + atlas_1_0_Abi, _ = atlas_1_0.AtlasMetaData.GetAbi() + atlas_1_1_Abi, _ = atlas_1_1.AtlasMetaData.GetAbi() + atlas_1_2_Abi, _ = atlas_1_2.AtlasMetaData.GetAbi() - atlasverification_1_0_0_Abi, _ = atlasverification_1_0_0.AtlasVerificationMetaData.GetAbi() - atlasverification_1_0_1_Abi, _ = atlasverification_1_0_1.AtlasVerificationMetaData.GetAbi() - atlasverification_1_1_0_Abi, _ = atlasverification_1_1_0.AtlasVerificationMetaData.GetAbi() + atlasverification_1_0_Abi, _ = atlasverification_1_0.AtlasVerificationMetaData.GetAbi() + atlasverification_1_1_Abi, _ = atlasverification_1_1.AtlasVerificationMetaData.GetAbi() + atlasverification_1_2_Abi, _ = atlasverification_1_2.AtlasVerificationMetaData.GetAbi() - simulator_1_0_0_Abi, _ = simulator_1_0_0.SimulatorMetaData.GetAbi() - simulator_1_0_1_Abi, _ = simulator_1_0_1.SimulatorMetaData.GetAbi() - simulator_1_1_0_Abi, _ = simulator_1_1_0.SimulatorMetaData.GetAbi() + simulator_1_0_Abi, _ = simulator_1_0.SimulatorMetaData.GetAbi() + simulator_1_1_Abi, _ = simulator_1_1.SimulatorMetaData.GetAbi() + simulator_1_2_Abi, _ = simulator_1_2.SimulatorMetaData.GetAbi() - sorter_1_0_0_Abi, _ = sorter_1_0_0.SorterMetaData.GetAbi() - sorter_1_0_1_Abi, _ = sorter_1_0_1.SorterMetaData.GetAbi() - sorter_1_1_0_Abi, _ = sorter_1_1_0.SorterMetaData.GetAbi() + sorter_1_0_Abi, _ = sorter_1_0.SorterMetaData.GetAbi() + sorter_1_1_Abi, _ = sorter_1_1.SorterMetaData.GetAbi() + sorter_1_2_Abi, _ = sorter_1_2.SorterMetaData.GetAbi() dappcontrol_Abi, _ = dappcontrol.DAppControlMetaData.GetAbi() ) @@ -51,48 +51,48 @@ var ( func GetAtlasAbi(version *string) (*abi.ABI, error) { switch config.GetVersion(version) { - case config.AtlasV_1_0_0: - return atlas_1_0_0_Abi, nil - case config.AtlasV_1_0_1: - return atlas_1_0_1_Abi, nil - case config.AtlasV_1_1_0: - return atlas_1_1_0_Abi, nil + case config.AtlasV_1_0: + return atlas_1_0_Abi, nil + case config.AtlasV_1_1: + return atlas_1_1_Abi, nil + case config.AtlasV_1_2: + return atlas_1_2_Abi, nil } return nil, errInvalidAtlasVersion } func GetAtlasVerificationAbi(version *string) (*abi.ABI, error) { switch config.GetVersion(version) { - case config.AtlasV_1_0_0: - return atlasverification_1_0_0_Abi, nil - case config.AtlasV_1_0_1: - return atlasverification_1_0_1_Abi, nil - case config.AtlasV_1_1_0: - return atlasverification_1_1_0_Abi, nil + case config.AtlasV_1_0: + return atlasverification_1_0_Abi, nil + case config.AtlasV_1_1: + return atlasverification_1_1_Abi, nil + case config.AtlasV_1_2: + return atlasverification_1_2_Abi, nil } return nil, errInvalidAtlasVersion } func GetSimulatorAbi(version *string) (*abi.ABI, error) { switch config.GetVersion(version) { - case config.AtlasV_1_0_0: - return simulator_1_0_0_Abi, nil - case config.AtlasV_1_0_1: - return simulator_1_0_1_Abi, nil - case config.AtlasV_1_1_0: - return simulator_1_1_0_Abi, nil + case config.AtlasV_1_0: + return simulator_1_0_Abi, nil + case config.AtlasV_1_1: + return simulator_1_1_Abi, nil + case config.AtlasV_1_2: + return simulator_1_2_Abi, nil } return nil, errInvalidAtlasVersion } func GetSorterAbi(version *string) (*abi.ABI, error) { switch config.GetVersion(version) { - case config.AtlasV_1_0_0: - return sorter_1_0_0_Abi, nil - case config.AtlasV_1_0_1: - return sorter_1_0_1_Abi, nil - case config.AtlasV_1_1_0: - return sorter_1_1_0_Abi, nil + case config.AtlasV_1_0: + return sorter_1_0_Abi, nil + case config.AtlasV_1_1: + return sorter_1_1_Abi, nil + case config.AtlasV_1_2: + return sorter_1_2_Abi, nil } return nil, errInvalidAtlasVersion } diff --git a/contract/atlas/1.0.0/abi.json b/contract/atlas/1.0/abi.json similarity index 100% rename from contract/atlas/1.0.0/abi.json rename to contract/atlas/1.0/abi.json diff --git a/contract/atlas/1.0.0/atlas.go b/contract/atlas/1.0/atlas.go similarity index 99% rename from contract/atlas/1.0.0/atlas.go rename to contract/atlas/1.0/atlas.go index 8d8fb07..8a253a6 100644 --- a/contract/atlas/1.0.0/atlas.go +++ b/contract/atlas/1.0/atlas.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlas_1_0_0 +package atlas_1_0 import ( "errors" diff --git a/contract/atlas/1.0.1/abi.json b/contract/atlas/1.1/abi.json similarity index 100% rename from contract/atlas/1.0.1/abi.json rename to contract/atlas/1.1/abi.json diff --git a/contract/atlas/1.0.1/atlas.go b/contract/atlas/1.1/atlas.go similarity index 99% rename from contract/atlas/1.0.1/atlas.go rename to contract/atlas/1.1/atlas.go index 7a9f8ec..1f6b6e3 100644 --- a/contract/atlas/1.0.1/atlas.go +++ b/contract/atlas/1.1/atlas.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlas_1_0_1 +package atlas_1_1 import ( "errors" diff --git a/contract/atlas/1.1.0/abi.json b/contract/atlas/1.2/abi.json similarity index 100% rename from contract/atlas/1.1.0/abi.json rename to contract/atlas/1.2/abi.json diff --git a/contract/atlas/1.1.0/atlas.go b/contract/atlas/1.2/atlas.go similarity index 99% rename from contract/atlas/1.1.0/atlas.go rename to contract/atlas/1.2/atlas.go index 88ba35a..f3491ce 100644 --- a/contract/atlas/1.1.0/atlas.go +++ b/contract/atlas/1.2/atlas.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlas_1_1_0 +package atlas_1_2 import ( "errors" diff --git a/contract/atlasverification/1.0.0/abi.json b/contract/atlasverification/1.0/abi.json similarity index 100% rename from contract/atlasverification/1.0.0/abi.json rename to contract/atlasverification/1.0/abi.json diff --git a/contract/atlasverification/1.0.0/atlasverification.go b/contract/atlasverification/1.0/atlasverification.go similarity index 99% rename from contract/atlasverification/1.0.0/atlasverification.go rename to contract/atlasverification/1.0/atlasverification.go index e1b7ffd..fb72819 100644 --- a/contract/atlasverification/1.0.0/atlasverification.go +++ b/contract/atlasverification/1.0/atlasverification.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlasverification_1_0_0 +package atlasverification_1_0 import ( "errors" diff --git a/contract/atlasverification/1.0.1/abi.json b/contract/atlasverification/1.1/abi.json similarity index 100% rename from contract/atlasverification/1.0.1/abi.json rename to contract/atlasverification/1.1/abi.json diff --git a/contract/atlasverification/1.0.1/atlasverification.go b/contract/atlasverification/1.1/atlasverification.go similarity index 99% rename from contract/atlasverification/1.0.1/atlasverification.go rename to contract/atlasverification/1.1/atlasverification.go index ca3d39b..9821677 100644 --- a/contract/atlasverification/1.0.1/atlasverification.go +++ b/contract/atlasverification/1.1/atlasverification.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlasverification_1_0_1 +package atlasverification_1_1 import ( "errors" diff --git a/contract/atlasverification/1.1.0/abi.json b/contract/atlasverification/1.2/abi.json similarity index 100% rename from contract/atlasverification/1.1.0/abi.json rename to contract/atlasverification/1.2/abi.json diff --git a/contract/atlasverification/1.1.0/atlasverification.go b/contract/atlasverification/1.2/atlasverification.go similarity index 99% rename from contract/atlasverification/1.1.0/atlasverification.go rename to contract/atlasverification/1.2/atlasverification.go index 9b4e118..4f6d66d 100644 --- a/contract/atlasverification/1.1.0/atlasverification.go +++ b/contract/atlasverification/1.2/atlasverification.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package atlasverification_1_1_0 +package atlasverification_1_2 import ( "errors" diff --git a/contract/simulator/1.0.0/abi.json b/contract/simulator/1.0/abi.json similarity index 100% rename from contract/simulator/1.0.0/abi.json rename to contract/simulator/1.0/abi.json diff --git a/contract/simulator/1.0.0/simulator.go b/contract/simulator/1.0/simulator.go similarity index 99% rename from contract/simulator/1.0.0/simulator.go rename to contract/simulator/1.0/simulator.go index 030c0e8..e0b27b6 100644 --- a/contract/simulator/1.0.0/simulator.go +++ b/contract/simulator/1.0/simulator.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package simulator_1_0_0 +package simulator_1_0 import ( "errors" diff --git a/contract/simulator/1.0.1/abi.json b/contract/simulator/1.1/abi.json similarity index 100% rename from contract/simulator/1.0.1/abi.json rename to contract/simulator/1.1/abi.json diff --git a/contract/simulator/1.0.1/simulator.go b/contract/simulator/1.1/simulator.go similarity index 99% rename from contract/simulator/1.0.1/simulator.go rename to contract/simulator/1.1/simulator.go index 78a8654..7190f1a 100644 --- a/contract/simulator/1.0.1/simulator.go +++ b/contract/simulator/1.1/simulator.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package simulator_1_0_1 +package simulator_1_1 import ( "errors" diff --git a/contract/simulator/1.1.0/abi.json b/contract/simulator/1.2/abi.json similarity index 100% rename from contract/simulator/1.1.0/abi.json rename to contract/simulator/1.2/abi.json diff --git a/contract/simulator/1.1.0/simulator.go b/contract/simulator/1.2/simulator.go similarity index 99% rename from contract/simulator/1.1.0/simulator.go rename to contract/simulator/1.2/simulator.go index 21c1a15..b6b63b8 100644 --- a/contract/simulator/1.1.0/simulator.go +++ b/contract/simulator/1.2/simulator.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package simulator_1_1_0 +package simulator_1_2 import ( "errors" diff --git a/contract/sorter/1.0.0/abi.json b/contract/sorter/1.0/abi.json similarity index 100% rename from contract/sorter/1.0.0/abi.json rename to contract/sorter/1.0/abi.json diff --git a/contract/sorter/1.0.0/sorter.go b/contract/sorter/1.0/sorter.go similarity index 99% rename from contract/sorter/1.0.0/sorter.go rename to contract/sorter/1.0/sorter.go index 4dffb6f..faf9709 100644 --- a/contract/sorter/1.0.0/sorter.go +++ b/contract/sorter/1.0/sorter.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package sorter_1_0_0 +package sorter_1_0 import ( "errors" diff --git a/contract/sorter/1.0.1/abi.json b/contract/sorter/1.1/abi.json similarity index 100% rename from contract/sorter/1.0.1/abi.json rename to contract/sorter/1.1/abi.json diff --git a/contract/sorter/1.0.1/sorter.go b/contract/sorter/1.1/sorter.go similarity index 99% rename from contract/sorter/1.0.1/sorter.go rename to contract/sorter/1.1/sorter.go index 89f2f5b..771d212 100644 --- a/contract/sorter/1.0.1/sorter.go +++ b/contract/sorter/1.1/sorter.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package sorter_1_0_1 +package sorter_1_1 import ( "errors" diff --git a/contract/sorter/1.1.0/abi.json b/contract/sorter/1.2/abi.json similarity index 100% rename from contract/sorter/1.1.0/abi.json rename to contract/sorter/1.2/abi.json diff --git a/contract/sorter/1.1.0/sorter.go b/contract/sorter/1.2/sorter.go similarity index 99% rename from contract/sorter/1.1.0/sorter.go rename to contract/sorter/1.2/sorter.go index da29ad0..77e8cfc 100644 --- a/contract/sorter/1.1.0/sorter.go +++ b/contract/sorter/1.2/sorter.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package sorter_1_1_0 +package sorter_1_2 import ( "errors" diff --git a/core/atlas.go b/core/atlas.go index d005b98..0082656 100644 --- a/core/atlas.go +++ b/core/atlas.go @@ -44,10 +44,10 @@ func (sdk *AtlasSdk) Metacall(chainId uint64, version *string, transactOpts *bin } switch config.GetVersion(version) { - case config.AtlasV_1_0_0, config.AtlasV_1_0_1: + case config.AtlasV_1_0, config.AtlasV_1_1: params = append(params, userOp, _solverOps, dAppOp) - case config.AtlasV_1_1_0: + case config.AtlasV_1_2: var _gasRefundBeneficiary common.Address if gasRefundBeneficiary != nil { _gasRefundBeneficiary = *gasRefundBeneficiary From 432f4dceb463f3edcfddcb802149fc471c7ad621 Mon Sep 17 00:00:00 2001 From: jj1980a Date: Fri, 6 Dec 2024 13:12:57 +0400 Subject: [PATCH 6/6] add atlas v1.3 support --- Makefile | 4 + config/chain.go | 5 +- contract/abi.go | 16 + contract/atlas/1.3/abi.json | 1 + contract/atlas/1.3/atlas.go | 4230 +++++++++++++++++ contract/atlasverification/1.3/abi.json | 1 + .../1.3/atlasverification.go | 1765 +++++++ contract/simulator/1.3/abi.json | 1 + contract/simulator/1.3/simulator.go | 602 +++ contract/sorter/1.3/abi.json | 1 + contract/sorter/1.3/sorter.go | 307 ++ core/atlas.go | 2 +- 12 files changed, 6932 insertions(+), 3 deletions(-) create mode 100644 contract/atlas/1.3/abi.json create mode 100644 contract/atlas/1.3/atlas.go create mode 100644 contract/atlasverification/1.3/abi.json create mode 100644 contract/atlasverification/1.3/atlasverification.go create mode 100644 contract/simulator/1.3/abi.json create mode 100644 contract/simulator/1.3/simulator.go create mode 100644 contract/sorter/1.3/abi.json create mode 100644 contract/sorter/1.3/sorter.go diff --git a/Makefile b/Makefile index 6d5c15e..9fe2b48 100644 --- a/Makefile +++ b/Makefile @@ -8,17 +8,21 @@ contracts-bindings: abigen --abi ./contract/atlas/1.0/abi.json --pkg atlas_1_0 --type Atlas --out ./contract/atlas/1.0/atlas.go abigen --abi ./contract/atlas/1.1/abi.json --pkg atlas_1_1 --type Atlas --out ./contract/atlas/1.1/atlas.go abigen --abi ./contract/atlas/1.2/abi.json --pkg atlas_1_2 --type Atlas --out ./contract/atlas/1.2/atlas.go + abigen --abi ./contract/atlas/1.3/abi.json --pkg atlas_1_3 --type Atlas --out ./contract/atlas/1.3/atlas.go abigen --abi ./contract/atlasverification/1.0/abi.json --pkg atlasverification_1_0 --type AtlasVerification --out ./contract/atlasverification/1.0/atlasverification.go abigen --abi ./contract/atlasverification/1.1/abi.json --pkg atlasverification_1_1 --type AtlasVerification --out ./contract/atlasverification/1.1/atlasverification.go abigen --abi ./contract/atlasverification/1.2/abi.json --pkg atlasverification_1_2 --type AtlasVerification --out ./contract/atlasverification/1.2/atlasverification.go + abigen --abi ./contract/atlasverification/1.3/abi.json --pkg atlasverification_1_3 --type AtlasVerification --out ./contract/atlasverification/1.3/atlasverification.go abigen --abi ./contract/simulator/1.0/abi.json --pkg simulator_1_0 --type Simulator --out ./contract/simulator/1.0/simulator.go abigen --abi ./contract/simulator/1.1/abi.json --pkg simulator_1_1 --type Simulator --out ./contract/simulator/1.1/simulator.go abigen --abi ./contract/simulator/1.2/abi.json --pkg simulator_1_2 --type Simulator --out ./contract/simulator/1.2/simulator.go + abigen --abi ./contract/simulator/1.3/abi.json --pkg simulator_1_3 --type Simulator --out ./contract/simulator/1.3/simulator.go abigen --abi ./contract/sorter/1.0/abi.json --pkg sorter_1_0 --type Sorter --out ./contract/sorter/1.0/sorter.go abigen --abi ./contract/sorter/1.1/abi.json --pkg sorter_1_1 --type Sorter --out ./contract/sorter/1.1/sorter.go abigen --abi ./contract/sorter/1.2/abi.json --pkg sorter_1_2 --type Sorter --out ./contract/sorter/1.2/sorter.go + abigen --abi ./contract/sorter/1.3/abi.json --pkg sorter_1_3 --type Sorter --out ./contract/sorter/1.3/sorter.go abigen --abi ./contract/dappcontrol/abi.json --pkg dappcontrol --type DAppControl --out ./contract/dappcontrol/dappcontrol.go diff --git a/config/chain.go b/config/chain.go index 215f452..23c11b2 100644 --- a/config/chain.go +++ b/config/chain.go @@ -26,7 +26,8 @@ const ( AtlasV_1_0 = "1.0" AtlasV_1_1 = "1.1" AtlasV_1_2 = "1.2" - AtlasVLatest = AtlasV_1_2 + AtlasV_1_3 = "1.3" + AtlasVLatest = AtlasV_1_3 ) var ( @@ -35,7 +36,7 @@ var ( initOnce sync.Once mu sync.RWMutex - allVersions = []string{AtlasV_1_0, AtlasV_1_1, AtlasV_1_2} + allVersions = []string{AtlasV_1_0, AtlasV_1_1, AtlasV_1_2, AtlasV_1_3} ) func initChainConfig() error { diff --git a/contract/abi.go b/contract/abi.go index bc475ec..ebd6307 100644 --- a/contract/abi.go +++ b/contract/abi.go @@ -9,18 +9,22 @@ import ( "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.0" "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.1" "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.2" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlas/1.3" "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.0" "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.1" "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.2" + "github.com/FastLane-Labs/atlas-sdk-go/contract/atlasverification/1.3" "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.0" "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.1" "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.2" + "github.com/FastLane-Labs/atlas-sdk-go/contract/simulator/1.3" "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.0" "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.1" "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.2" + "github.com/FastLane-Labs/atlas-sdk-go/contract/sorter/1.3" "github.com/FastLane-Labs/atlas-sdk-go/contract/dappcontrol" ) @@ -29,18 +33,22 @@ var ( atlas_1_0_Abi, _ = atlas_1_0.AtlasMetaData.GetAbi() atlas_1_1_Abi, _ = atlas_1_1.AtlasMetaData.GetAbi() atlas_1_2_Abi, _ = atlas_1_2.AtlasMetaData.GetAbi() + atlas_1_3_Abi, _ = atlas_1_3.AtlasMetaData.GetAbi() atlasverification_1_0_Abi, _ = atlasverification_1_0.AtlasVerificationMetaData.GetAbi() atlasverification_1_1_Abi, _ = atlasverification_1_1.AtlasVerificationMetaData.GetAbi() atlasverification_1_2_Abi, _ = atlasverification_1_2.AtlasVerificationMetaData.GetAbi() + atlasverification_1_3_Abi, _ = atlasverification_1_3.AtlasVerificationMetaData.GetAbi() simulator_1_0_Abi, _ = simulator_1_0.SimulatorMetaData.GetAbi() simulator_1_1_Abi, _ = simulator_1_1.SimulatorMetaData.GetAbi() simulator_1_2_Abi, _ = simulator_1_2.SimulatorMetaData.GetAbi() + simulator_1_3_Abi, _ = simulator_1_3.SimulatorMetaData.GetAbi() sorter_1_0_Abi, _ = sorter_1_0.SorterMetaData.GetAbi() sorter_1_1_Abi, _ = sorter_1_1.SorterMetaData.GetAbi() sorter_1_2_Abi, _ = sorter_1_2.SorterMetaData.GetAbi() + sorter_1_3_Abi, _ = sorter_1_3.SorterMetaData.GetAbi() dappcontrol_Abi, _ = dappcontrol.DAppControlMetaData.GetAbi() ) @@ -57,6 +65,8 @@ func GetAtlasAbi(version *string) (*abi.ABI, error) { return atlas_1_1_Abi, nil case config.AtlasV_1_2: return atlas_1_2_Abi, nil + case config.AtlasV_1_3: + return atlas_1_3_Abi, nil } return nil, errInvalidAtlasVersion } @@ -69,6 +79,8 @@ func GetAtlasVerificationAbi(version *string) (*abi.ABI, error) { return atlasverification_1_1_Abi, nil case config.AtlasV_1_2: return atlasverification_1_2_Abi, nil + case config.AtlasV_1_3: + return atlasverification_1_3_Abi, nil } return nil, errInvalidAtlasVersion } @@ -81,6 +93,8 @@ func GetSimulatorAbi(version *string) (*abi.ABI, error) { return simulator_1_1_Abi, nil case config.AtlasV_1_2: return simulator_1_2_Abi, nil + case config.AtlasV_1_3: + return simulator_1_3_Abi, nil } return nil, errInvalidAtlasVersion } @@ -93,6 +107,8 @@ func GetSorterAbi(version *string) (*abi.ABI, error) { return sorter_1_1_Abi, nil case config.AtlasV_1_2: return sorter_1_2_Abi, nil + case config.AtlasV_1_3: + return sorter_1_3_Abi, nil } return nil, errInvalidAtlasVersion } diff --git a/contract/atlas/1.3/abi.json b/contract/atlas/1.3/abi.json new file mode 100644 index 0000000..0be8ca6 --- /dev/null +++ b/contract/atlas/1.3/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[{"name":"escrowDuration","type":"uint256","internalType":"uint256"},{"name":"atlasSurchargeRate","type":"uint256","internalType":"uint256"},{"name":"bundlerSurchargeRate","type":"uint256","internalType":"uint256"},{"name":"verification","type":"address","internalType":"address"},{"name":"simulator","type":"address","internalType":"address"},{"name":"initialSurchargeRecipient","type":"address","internalType":"address"},{"name":"l2GasCalculator","type":"address","internalType":"address"},{"name":"factoryLib","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ESCROW_DURATION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY_LIB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FIXED_GAS_OFFSET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"L2_GAS_CALCULATOR","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SCALE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SIMULATOR","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERIFICATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAtlasVerification"}],"stateMutability":"view"},{"type":"function","name":"accessData","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"bonded","type":"uint112","internalType":"uint112"},{"name":"lastAccessedBlock","type":"uint32","internalType":"uint32"},{"name":"auctionWins","type":"uint24","internalType":"uint24"},{"name":"auctionFails","type":"uint24","internalType":"uint24"},{"name":"totalGasValueUsed","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"accountLastActiveBlock","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"atlasSurchargeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBonded","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfUnbonding","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"becomeSurchargeRecipient","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bond","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bondedTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"borrow","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bundlerSurchargeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"contribute","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"createExecutionEnvironment","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"executionEnvironment","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeSurcharge","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndBond","inputs":[{"name":"amountToBond","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"dConfig","type":"tuple","internalType":"struct DAppConfig","components":[{"name":"to","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"solverGasLimit","type":"uint32","internalType":"uint32"}]},{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"isSimulation","type":"bool","internalType":"bool"}],"outputs":[{"name":"ctx","type":"tuple","internalType":"struct Context","components":[{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"solverOutcome","type":"uint24","internalType":"uint24"},{"name":"solverIndex","type":"uint8","internalType":"uint8"},{"name":"solverCount","type":"uint8","internalType":"uint8"},{"name":"callDepth","type":"uint8","internalType":"uint8"},{"name":"phase","type":"uint8","internalType":"uint8"},{"name":"solverSuccessful","type":"bool","internalType":"bool"},{"name":"paymentsSuccessful","type":"bool","internalType":"bool"},{"name":"bidFind","type":"bool","internalType":"bool"},{"name":"isSimulation","type":"bool","internalType":"bool"},{"name":"bundler","type":"address","internalType":"address"}]}],"stateMutability":"payable"},{"type":"function","name":"getExecutionEnvironment","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"exists","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isUnlocked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[],"outputs":[{"name":"activeEnvironment","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"phase","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"metacall","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"gasRefundBeneficiary","type":"address","internalType":"address"}],"outputs":[{"name":"auctionWon","type":"bool","internalType":"bool"}],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"pendingSurchargeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"reconcile","inputs":[{"name":"maxApprovedGasSpend","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owed","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSurchargeRates","inputs":[{"name":"newAtlasRate","type":"uint256","internalType":"uint256"},{"name":"newBundlerRate","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"shortfall","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"solverCall","inputs":[{"name":"ctx","type":"tuple","internalType":"struct Context","components":[{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"executionEnvironment","type":"address","internalType":"address"},{"name":"solverOutcome","type":"uint24","internalType":"uint24"},{"name":"solverIndex","type":"uint8","internalType":"uint8"},{"name":"solverCount","type":"uint8","internalType":"uint8"},{"name":"callDepth","type":"uint8","internalType":"uint8"},{"name":"phase","type":"uint8","internalType":"uint8"},{"name":"solverSuccessful","type":"bool","internalType":"bool"},{"name":"paymentsSuccessful","type":"bool","internalType":"bool"},{"name":"bidFind","type":"bool","internalType":"bool"},{"name":"isSimulation","type":"bool","internalType":"bool"},{"name":"bundler","type":"address","internalType":"address"}]},{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"solverTracker","type":"tuple","internalType":"struct SolverTracker","components":[{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"floor","type":"uint256","internalType":"uint256"},{"name":"ceiling","type":"uint256","internalType":"uint256"},{"name":"etherIsBidToken","type":"bool","internalType":"bool"},{"name":"invertsBidValue","type":"bool","internalType":"bool"}]}],"stateMutability":"payable"},{"type":"function","name":"solverLockData","inputs":[],"outputs":[{"name":"currentSolver","type":"address","internalType":"address"},{"name":"calledBack","type":"bool","internalType":"bool"},{"name":"fulfilled","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"solverOpHashes","inputs":[{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"surchargeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferDAppERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferSurchargeRecipient","inputs":[{"name":"newRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferUserERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unbond","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unbondingCompleteBlock","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawSurcharge","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Bond","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DAppDisabled","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"DAppGovernanceChanged","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"oldGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"ExecutionEnvironmentCreated","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"executionEnvironment","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"GovernanceTransferStarted","inputs":[{"name":"previousGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"GovernanceTransferred","inputs":[{"name":"previousGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MetacallResult","inputs":[{"name":"bundler","type":"address","indexed":true,"internalType":"address"},{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"solverSuccessful","type":"bool","indexed":false,"internalType":"bool"},{"name":"disbursementSuccessful","type":"bool","indexed":false,"internalType":"bool"},{"name":"ethPaidToBundler","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"netGasSurcharge","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"Redeem","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RemovedDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"SolverTxResult","inputs":[{"name":"solverTo","type":"address","indexed":true,"internalType":"address"},{"name":"solverFrom","type":"address","indexed":true,"internalType":"address"},{"name":"dAppControl","type":"address","indexed":true,"internalType":"address"},{"name":"bidToken","type":"address","indexed":false,"internalType":"address"},{"name":"bidAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executed","type":"bool","indexed":false,"internalType":"bool"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"},{"name":"result","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SurchargeRecipientTransferStarted","inputs":[{"name":"currentRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"newRecipient","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SurchargeRecipientTransferred","inputs":[{"name":"newRecipient","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SurchargeWithdrawn","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unbond","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"earliestAvailable","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AllocateValueDelegatecallFail","inputs":[]},{"type":"error","name":"AllocateValueFail","inputs":[]},{"type":"error","name":"AllocateValueSimFail","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlteredControl","inputs":[]},{"type":"error","name":"AtlasLockActive","inputs":[]},{"type":"error","name":"BalanceNotReconciled","inputs":[]},{"type":"error","name":"BidFindSuccessful","inputs":[{"name":"bidAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BidNotPaid","inputs":[]},{"type":"error","name":"BothPreOpsAndUserReturnDataCannotBeTracked","inputs":[]},{"type":"error","name":"BothUserAndDAppNoncesCannotBeSequential","inputs":[]},{"type":"error","name":"CallbackNotCalled","inputs":[]},{"type":"error","name":"DAppNotEnabled","inputs":[]},{"type":"error","name":"DoubleReconcile","inputs":[]},{"type":"error","name":"EnvironmentMismatch","inputs":[]},{"type":"error","name":"EscrowLockActive","inputs":[]},{"type":"error","name":"ExecutionEnvironmentBalanceTooLow","inputs":[]},{"type":"error","name":"InsufficientAtlETHBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientBalanceForDeduction","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"requested","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientEscrow","inputs":[]},{"type":"error","name":"InsufficientFunds","inputs":[]},{"type":"error","name":"InsufficientLocalFunds","inputs":[]},{"type":"error","name":"InsufficientSolverBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"holds","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTotalBalance","inputs":[{"name":"shortfall","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidAccess","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"InvalidCodeHash","inputs":[]},{"type":"error","name":"InvalidControl","inputs":[]},{"type":"error","name":"InvalidDAppControl","inputs":[]},{"type":"error","name":"InvalidEntry","inputs":[]},{"type":"error","name":"InvalidEntryFunction","inputs":[]},{"type":"error","name":"InvalidEnvironment","inputs":[]},{"type":"error","name":"InvalidEscrowDuration","inputs":[]},{"type":"error","name":"InvalidExecutionEnvironment","inputs":[{"name":"correctEnvironment","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidLockState","inputs":[]},{"type":"error","name":"InvalidSignatory","inputs":[]},{"type":"error","name":"InvalidSolver","inputs":[]},{"type":"error","name":"InvalidSolverFrom","inputs":[{"name":"solverFrom","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTo","inputs":[]},{"type":"error","name":"InvalidUser","inputs":[]},{"type":"error","name":"InvertBidValueCannotBeExPostBids","inputs":[]},{"type":"error","name":"InvertedBidExceedsCeiling","inputs":[]},{"type":"error","name":"LedgerBalancing","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"LedgerFinalized","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MissingFunds","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MustBeDelegatecalled","inputs":[]},{"type":"error","name":"NoAuctionWinner","inputs":[]},{"type":"error","name":"NoDelegatecall","inputs":[]},{"type":"error","name":"NoUnfilledRequests","inputs":[]},{"type":"error","name":"NoUnusedNonceInBitmap","inputs":[]},{"type":"error","name":"NotEnvironmentOwner","inputs":[]},{"type":"error","name":"NotImplemented","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"OnlyAtlas","inputs":[]},{"type":"error","name":"OnlyGovernance","inputs":[]},{"type":"error","name":"PostOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PostOpsDelegatecallReturnedFalse","inputs":[]},{"type":"error","name":"PostOpsFail","inputs":[]},{"type":"error","name":"PostOpsSimFail","inputs":[]},{"type":"error","name":"PostSolverFailed","inputs":[]},{"type":"error","name":"PreOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PreOpsFail","inputs":[]},{"type":"error","name":"PreOpsSimFail","inputs":[]},{"type":"error","name":"PreSolverFailed","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SignatoryActive","inputs":[]},{"type":"error","name":"SimulationPassed","inputs":[]},{"type":"error","name":"SimulatorBalanceTooLow","inputs":[]},{"type":"error","name":"SolverMustReconcile","inputs":[]},{"type":"error","name":"SolverOpReverted","inputs":[]},{"type":"error","name":"SolverSimFail","inputs":[{"name":"solverOutcomeResult","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SurchargeRateTooHigh","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnbalancedAccounting","inputs":[]},{"type":"error","name":"UncoveredResult","inputs":[]},{"type":"error","name":"UnexpectedNonRevert","inputs":[]},{"type":"error","name":"Unreachable","inputs":[]},{"type":"error","name":"UserNotFulfilled","inputs":[]},{"type":"error","name":"UserOpFail","inputs":[]},{"type":"error","name":"UserOpSimFail","inputs":[]},{"type":"error","name":"UserOpValueExceedsBalance","inputs":[]},{"type":"error","name":"UserSimulationFailed","inputs":[]},{"type":"error","name":"UserSimulationSucceeded","inputs":[]},{"type":"error","name":"UserUnexpectedSuccess","inputs":[]},{"type":"error","name":"UserWrapperCallFail","inputs":[]},{"type":"error","name":"UserWrapperDelegatecallFail","inputs":[]},{"type":"error","name":"ValidCalls","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"VerificationSimFail","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"WrongDepth","inputs":[]},{"type":"error","name":"WrongPhase","inputs":[]}] \ No newline at end of file diff --git a/contract/atlas/1.3/atlas.go b/contract/atlas/1.3/atlas.go new file mode 100644 index 0000000..4ca8c8b --- /dev/null +++ b/contract/atlas/1.3/atlas.go @@ -0,0 +1,4230 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package atlas_1_3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// Context is an auto generated low-level Go binding around an user-defined struct. +type Context struct { + UserOpHash [32]byte + ExecutionEnvironment common.Address + SolverOutcome *big.Int + SolverIndex uint8 + SolverCount uint8 + CallDepth uint8 + Phase uint8 + SolverSuccessful bool + PaymentsSuccessful bool + BidFind bool + IsSimulation bool + Bundler common.Address +} + +// DAppConfig is an auto generated low-level Go binding around an user-defined struct. +type DAppConfig struct { + To common.Address + CallConfig uint32 + BidToken common.Address + SolverGasLimit uint32 +} + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// SolverTracker is an auto generated low-level Go binding around an user-defined struct. +type SolverTracker struct { + BidAmount *big.Int + Floor *big.Int + Ceiling *big.Int + EtherIsBidToken bool + InvertsBidValue bool +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// AtlasMetaData contains all meta data concerning the Atlas contract. +var AtlasMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"escrowDuration\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"atlasSurchargeRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"bundlerSurchargeRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verification\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"simulator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialSurchargeRecipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"l2GasCalculator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"factoryLib\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ESCROW_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FACTORY_LIB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FIXED_GAS_OFFSET\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_GAS_CALCULATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SCALE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SIMULATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERIFICATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAtlasVerification\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"accessData\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"bonded\",\"type\":\"uint112\",\"internalType\":\"uint112\"},{\"name\":\"lastAccessedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"auctionWins\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"auctionFails\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"totalGasValueUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"accountLastActiveBlock\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"atlasSurchargeRate\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOfBonded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOfUnbonding\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"becomeSurchargeRecipient\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bond\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bondedTotalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"borrow\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"bundlerSurchargeRate\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"contribute\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"createExecutionEnvironment\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeSurcharge\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndBond\",\"inputs\":[{\"name\":\"amountToBond\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"dConfig\",\"type\":\"tuple\",\"internalType\":\"structDAppConfig\",\"components\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"ctx\",\"type\":\"tuple\",\"internalType\":\"structContext\",\"components\":[{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverOutcome\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"solverIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverCount\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"callDepth\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"phase\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"paymentsSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bidFind\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getExecutionEnvironment\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"exists\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isUnlocked\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lock\",\"inputs\":[],\"outputs\":[{\"name\":\"activeEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"phase\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"metacall\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"gasRefundBeneficiary\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"auctionWon\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingSurchargeRecipient\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"reconcile\",\"inputs\":[{\"name\":\"maxApprovedGasSpend\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"owed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"redeem\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setSurchargeRates\",\"inputs\":[{\"name\":\"newAtlasRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newBundlerRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"shortfall\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"solverCall\",\"inputs\":[{\"name\":\"ctx\",\"type\":\"tuple\",\"internalType\":\"structContext\",\"components\":[{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverOutcome\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"solverIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverCount\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"callDepth\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"phase\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"solverSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"paymentsSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bidFind\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"solverTracker\",\"type\":\"tuple\",\"internalType\":\"structSolverTracker\",\"components\":[{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"floor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ceiling\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"etherIsBidToken\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"invertsBidValue\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"solverLockData\",\"inputs\":[],\"outputs\":[{\"name\":\"currentSolver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"calledBack\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"fulfilled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"solverOpHashes\",\"inputs\":[{\"name\":\"opHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"surchargeRecipient\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferDAppERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferSurchargeRecipient\",\"inputs\":[{\"name\":\"newRecipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferUserERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unbond\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unbondingCompleteBlock\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSurcharge\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Bond\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Burn\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DAppDisabled\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DAppGovernanceChanged\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutionEnvironmentCreated\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"executionEnvironment\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GovernanceTransferStarted\",\"inputs\":[{\"name\":\"previousGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GovernanceTransferred\",\"inputs\":[{\"name\":\"previousGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MetacallResult\",\"inputs\":[{\"name\":\"bundler\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"solverSuccessful\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"disbursementSuccessful\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"ethPaidToBundler\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"netGasSurcharge\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Redeem\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RemovedDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SolverTxResult\",\"inputs\":[{\"name\":\"solverTo\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"solverFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"dAppControl\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"bidToken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"executed\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"success\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"result\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SurchargeRecipientTransferStarted\",\"inputs\":[{\"name\":\"currentRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SurchargeRecipientTransferred\",\"inputs\":[{\"name\":\"newRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SurchargeWithdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unbond\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"earliestAvailable\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AllocateValueDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlteredControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AtlasLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BalanceNotReconciled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidFindSuccessful\",\"inputs\":[{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BidNotPaid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallbackNotCalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DAppNotEnabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DoubleReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnvironmentMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EscrowLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAtlETHBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientBalanceForDeduction\",\"inputs\":[{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requested\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientEscrow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientLocalFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientSolverBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"holds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientTotalBalance\",\"inputs\":[{\"name\":\"shortfall\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidAccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodeHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDAppControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntry\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntryFunction\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEnvironment\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEscrowDuration\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidExecutionEnvironment\",\"inputs\":[{\"name\":\"correctEnvironment\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidLockState\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatory\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolver\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolverFrom\",\"inputs\":[{\"name\":\"solverFrom\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTo\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidUser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertBidValueCannotBeExPostBids\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertedBidExceedsCeiling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LedgerBalancing\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"LedgerFinalized\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MissingFunds\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MustBeDelegatecalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoAuctionWinner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoDelegatecall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnfilledRequests\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnusedNonceInBitmap\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEnvironmentOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotImplemented\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAtlas\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyGovernance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallReturnedFalse\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\",\"inputs\":[{\"name\":\"bits\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SignatoryActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulationPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulatorBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverMustReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverOpReverted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverSimFail\",\"inputs\":[{\"name\":\"solverOutcomeResult\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SurchargeRateTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnbalancedAccounting\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UncoveredResult\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedNonRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unreachable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserNotFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpValueExceedsBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationSucceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserUnexpectedSuccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperCallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidCalls\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"VerificationSimFail\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"WrongDepth\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongPhase\",\"inputs\":[]}]", +} + +// AtlasABI is the input ABI used to generate the binding from. +// Deprecated: Use AtlasMetaData.ABI instead. +var AtlasABI = AtlasMetaData.ABI + +// Atlas is an auto generated Go binding around an Ethereum contract. +type Atlas struct { + AtlasCaller // Read-only binding to the contract + AtlasTransactor // Write-only binding to the contract + AtlasFilterer // Log filterer for contract events +} + +// AtlasCaller is an auto generated read-only Go binding around an Ethereum contract. +type AtlasCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AtlasTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AtlasFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AtlasSession struct { + Contract *Atlas // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AtlasCallerSession struct { + Contract *AtlasCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AtlasTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AtlasTransactorSession struct { + Contract *AtlasTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasRaw is an auto generated low-level Go binding around an Ethereum contract. +type AtlasRaw struct { + Contract *Atlas // Generic contract binding to access the raw methods on +} + +// AtlasCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AtlasCallerRaw struct { + Contract *AtlasCaller // Generic read-only contract binding to access the raw methods on +} + +// AtlasTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AtlasTransactorRaw struct { + Contract *AtlasTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAtlas creates a new instance of Atlas, bound to a specific deployed contract. +func NewAtlas(address common.Address, backend bind.ContractBackend) (*Atlas, error) { + contract, err := bindAtlas(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Atlas{AtlasCaller: AtlasCaller{contract: contract}, AtlasTransactor: AtlasTransactor{contract: contract}, AtlasFilterer: AtlasFilterer{contract: contract}}, nil +} + +// NewAtlasCaller creates a new read-only instance of Atlas, bound to a specific deployed contract. +func NewAtlasCaller(address common.Address, caller bind.ContractCaller) (*AtlasCaller, error) { + contract, err := bindAtlas(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AtlasCaller{contract: contract}, nil +} + +// NewAtlasTransactor creates a new write-only instance of Atlas, bound to a specific deployed contract. +func NewAtlasTransactor(address common.Address, transactor bind.ContractTransactor) (*AtlasTransactor, error) { + contract, err := bindAtlas(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AtlasTransactor{contract: contract}, nil +} + +// NewAtlasFilterer creates a new log filterer instance of Atlas, bound to a specific deployed contract. +func NewAtlasFilterer(address common.Address, filterer bind.ContractFilterer) (*AtlasFilterer, error) { + contract, err := bindAtlas(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AtlasFilterer{contract: contract}, nil +} + +// bindAtlas binds a generic wrapper to an already deployed contract. +func bindAtlas(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AtlasABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Atlas *AtlasRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Atlas.Contract.AtlasCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Atlas *AtlasRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.Contract.AtlasTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Atlas *AtlasRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Atlas.Contract.AtlasTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Atlas *AtlasCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Atlas.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Atlas *AtlasTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Atlas *AtlasTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Atlas.Contract.contract.Transact(opts, method, params...) +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasCaller) ESCROWDURATION(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "ESCROW_DURATION") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasSession) ESCROWDURATION() (*big.Int, error) { + return _Atlas.Contract.ESCROWDURATION(&_Atlas.CallOpts) +} + +// ESCROWDURATION is a free data retrieval call binding the contract method 0xa6efccf9. +// +// Solidity: function ESCROW_DURATION() view returns(uint256) +func (_Atlas *AtlasCallerSession) ESCROWDURATION() (*big.Int, error) { + return _Atlas.Contract.ESCROWDURATION(&_Atlas.CallOpts) +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasCaller) FACTORYLIB(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "FACTORY_LIB") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasSession) FACTORYLIB() (common.Address, error) { + return _Atlas.Contract.FACTORYLIB(&_Atlas.CallOpts) +} + +// FACTORYLIB is a free data retrieval call binding the contract method 0x67f7c8e0. +// +// Solidity: function FACTORY_LIB() view returns(address) +func (_Atlas *AtlasCallerSession) FACTORYLIB() (common.Address, error) { + return _Atlas.Contract.FACTORYLIB(&_Atlas.CallOpts) +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasCaller) FIXEDGASOFFSET(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "FIXED_GAS_OFFSET") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasSession) FIXEDGASOFFSET() (*big.Int, error) { + return _Atlas.Contract.FIXEDGASOFFSET(&_Atlas.CallOpts) +} + +// FIXEDGASOFFSET is a free data retrieval call binding the contract method 0x0019f274. +// +// Solidity: function FIXED_GAS_OFFSET() view returns(uint256) +func (_Atlas *AtlasCallerSession) FIXEDGASOFFSET() (*big.Int, error) { + return _Atlas.Contract.FIXEDGASOFFSET(&_Atlas.CallOpts) +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasCaller) L2GASCALCULATOR(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "L2_GAS_CALCULATOR") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasSession) L2GASCALCULATOR() (common.Address, error) { + return _Atlas.Contract.L2GASCALCULATOR(&_Atlas.CallOpts) +} + +// L2GASCALCULATOR is a free data retrieval call binding the contract method 0x5cd6ef67. +// +// Solidity: function L2_GAS_CALCULATOR() view returns(address) +func (_Atlas *AtlasCallerSession) L2GASCALCULATOR() (common.Address, error) { + return _Atlas.Contract.L2GASCALCULATOR(&_Atlas.CallOpts) +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasCaller) SCALE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "SCALE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasSession) SCALE() (*big.Int, error) { + return _Atlas.Contract.SCALE(&_Atlas.CallOpts) +} + +// SCALE is a free data retrieval call binding the contract method 0xeced5526. +// +// Solidity: function SCALE() view returns(uint256) +func (_Atlas *AtlasCallerSession) SCALE() (*big.Int, error) { + return _Atlas.Contract.SCALE(&_Atlas.CallOpts) +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasCaller) SIMULATOR(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "SIMULATOR") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasSession) SIMULATOR() (common.Address, error) { + return _Atlas.Contract.SIMULATOR(&_Atlas.CallOpts) +} + +// SIMULATOR is a free data retrieval call binding the contract method 0x79b79765. +// +// Solidity: function SIMULATOR() view returns(address) +func (_Atlas *AtlasCallerSession) SIMULATOR() (common.Address, error) { + return _Atlas.Contract.SIMULATOR(&_Atlas.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasCaller) VERIFICATION(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "VERIFICATION") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasSession) VERIFICATION() (common.Address, error) { + return _Atlas.Contract.VERIFICATION(&_Atlas.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Atlas *AtlasCallerSession) VERIFICATION() (common.Address, error) { + return _Atlas.Contract.VERIFICATION(&_Atlas.CallOpts) +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasCaller) AccessData(opts *bind.CallOpts, account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "accessData", account) + + outstruct := new(struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Bonded = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LastAccessedBlock = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.AuctionWins = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.AuctionFails = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TotalGasValueUsed = *abi.ConvertType(out[4], new(uint64)).(*uint64) + + return *outstruct, err + +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasSession) AccessData(account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) +} + +// AccessData is a free data retrieval call binding the contract method 0x5e8edccc. +// +// Solidity: function accessData(address account) view returns(uint112 bonded, uint32 lastAccessedBlock, uint24 auctionWins, uint24 auctionFails, uint64 totalGasValueUsed) +func (_Atlas *AtlasCallerSession) AccessData(account common.Address) (struct { + Bonded *big.Int + LastAccessedBlock uint32 + AuctionWins *big.Int + AuctionFails *big.Int + TotalGasValueUsed uint64 +}, error) { + return _Atlas.Contract.AccessData(&_Atlas.CallOpts, account) +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasCaller) AccountLastActiveBlock(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "accountLastActiveBlock", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasSession) AccountLastActiveBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.AccountLastActiveBlock(&_Atlas.CallOpts, account) +} + +// AccountLastActiveBlock is a free data retrieval call binding the contract method 0x7c20857a. +// +// Solidity: function accountLastActiveBlock(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) AccountLastActiveBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.AccountLastActiveBlock(&_Atlas.CallOpts, account) +} + +// AtlasSurchargeRate is a free data retrieval call binding the contract method 0xa98efd67. +// +// Solidity: function atlasSurchargeRate() view returns(uint256) +func (_Atlas *AtlasCaller) AtlasSurchargeRate(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "atlasSurchargeRate") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AtlasSurchargeRate is a free data retrieval call binding the contract method 0xa98efd67. +// +// Solidity: function atlasSurchargeRate() view returns(uint256) +func (_Atlas *AtlasSession) AtlasSurchargeRate() (*big.Int, error) { + return _Atlas.Contract.AtlasSurchargeRate(&_Atlas.CallOpts) +} + +// AtlasSurchargeRate is a free data retrieval call binding the contract method 0xa98efd67. +// +// Solidity: function atlasSurchargeRate() view returns(uint256) +func (_Atlas *AtlasCallerSession) AtlasSurchargeRate() (*big.Int, error) { + return _Atlas.Contract.AtlasSurchargeRate(&_Atlas.CallOpts) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOf(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOf(&_Atlas.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOf(&_Atlas.CallOpts, account) +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOfBonded(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOfBonded", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOfBonded(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfBonded(&_Atlas.CallOpts, account) +} + +// BalanceOfBonded is a free data retrieval call binding the contract method 0x825ad607. +// +// Solidity: function balanceOfBonded(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOfBonded(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfBonded(&_Atlas.CallOpts, account) +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasCaller) BalanceOfUnbonding(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "balanceOfUnbonding", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasSession) BalanceOfUnbonding(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfUnbonding(&_Atlas.CallOpts, account) +} + +// BalanceOfUnbonding is a free data retrieval call binding the contract method 0xaebaa5f7. +// +// Solidity: function balanceOfUnbonding(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) BalanceOfUnbonding(account common.Address) (*big.Int, error) { + return _Atlas.Contract.BalanceOfUnbonding(&_Atlas.CallOpts, account) +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasCaller) BondedTotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "bondedTotalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasSession) BondedTotalSupply() (*big.Int, error) { + return _Atlas.Contract.BondedTotalSupply(&_Atlas.CallOpts) +} + +// BondedTotalSupply is a free data retrieval call binding the contract method 0x890c2854. +// +// Solidity: function bondedTotalSupply() view returns(uint256) +func (_Atlas *AtlasCallerSession) BondedTotalSupply() (*big.Int, error) { + return _Atlas.Contract.BondedTotalSupply(&_Atlas.CallOpts) +} + +// BundlerSurchargeRate is a free data retrieval call binding the contract method 0xd1c23acf. +// +// Solidity: function bundlerSurchargeRate() view returns(uint256) +func (_Atlas *AtlasCaller) BundlerSurchargeRate(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "bundlerSurchargeRate") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BundlerSurchargeRate is a free data retrieval call binding the contract method 0xd1c23acf. +// +// Solidity: function bundlerSurchargeRate() view returns(uint256) +func (_Atlas *AtlasSession) BundlerSurchargeRate() (*big.Int, error) { + return _Atlas.Contract.BundlerSurchargeRate(&_Atlas.CallOpts) +} + +// BundlerSurchargeRate is a free data retrieval call binding the contract method 0xd1c23acf. +// +// Solidity: function bundlerSurchargeRate() view returns(uint256) +func (_Atlas *AtlasCallerSession) BundlerSurchargeRate() (*big.Int, error) { + return _Atlas.Contract.BundlerSurchargeRate(&_Atlas.CallOpts) +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasCaller) CumulativeSurcharge(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "cumulativeSurcharge") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasSession) CumulativeSurcharge() (*big.Int, error) { + return _Atlas.Contract.CumulativeSurcharge(&_Atlas.CallOpts) +} + +// CumulativeSurcharge is a free data retrieval call binding the contract method 0xc5471d9e. +// +// Solidity: function cumulativeSurcharge() view returns(uint256) +func (_Atlas *AtlasCallerSession) CumulativeSurcharge() (*big.Int, error) { + return _Atlas.Contract.CumulativeSurcharge(&_Atlas.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasSession) Decimals() (uint8, error) { + return _Atlas.Contract.Decimals(&_Atlas.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_Atlas *AtlasCallerSession) Decimals() (uint8, error) { + return _Atlas.Contract.Decimals(&_Atlas.CallOpts) +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasCaller) IsUnlocked(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "isUnlocked") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasSession) IsUnlocked() (bool, error) { + return _Atlas.Contract.IsUnlocked(&_Atlas.CallOpts) +} + +// IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7. +// +// Solidity: function isUnlocked() view returns(bool) +func (_Atlas *AtlasCallerSession) IsUnlocked() (bool, error) { + return _Atlas.Contract.IsUnlocked(&_Atlas.CallOpts) +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasCaller) Lock(opts *bind.CallOpts) (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "lock") + + outstruct := new(struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 + }) + if err != nil { + return *outstruct, err + } + + outstruct.ActiveEnvironment = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.CallConfig = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.Phase = *abi.ConvertType(out[2], new(uint8)).(*uint8) + + return *outstruct, err + +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasSession) Lock() (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + return _Atlas.Contract.Lock(&_Atlas.CallOpts) +} + +// Lock is a free data retrieval call binding the contract method 0xf83d08ba. +// +// Solidity: function lock() view returns(address activeEnvironment, uint32 callConfig, uint8 phase) +func (_Atlas *AtlasCallerSession) Lock() (struct { + ActiveEnvironment common.Address + CallConfig uint32 + Phase uint8 +}, error) { + return _Atlas.Contract.Lock(&_Atlas.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasSession) Name() (string, error) { + return _Atlas.Contract.Name(&_Atlas.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_Atlas *AtlasCallerSession) Name() (string, error) { + return _Atlas.Contract.Name(&_Atlas.CallOpts) +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasCaller) PendingSurchargeRecipient(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "pendingSurchargeRecipient") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasSession) PendingSurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.PendingSurchargeRecipient(&_Atlas.CallOpts) +} + +// PendingSurchargeRecipient is a free data retrieval call binding the contract method 0x7c3c3160. +// +// Solidity: function pendingSurchargeRecipient() view returns(address) +func (_Atlas *AtlasCallerSession) PendingSurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.PendingSurchargeRecipient(&_Atlas.CallOpts) +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasCaller) Shortfall(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "shortfall") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasSession) Shortfall() (*big.Int, error) { + return _Atlas.Contract.Shortfall(&_Atlas.CallOpts) +} + +// Shortfall is a free data retrieval call binding the contract method 0x19b1faef. +// +// Solidity: function shortfall() view returns(uint256) +func (_Atlas *AtlasCallerSession) Shortfall() (*big.Int, error) { + return _Atlas.Contract.Shortfall(&_Atlas.CallOpts) +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasCaller) SolverLockData(opts *bind.CallOpts) (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "solverLockData") + + outstruct := new(struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.CurrentSolver = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.CalledBack = *abi.ConvertType(out[1], new(bool)).(*bool) + outstruct.Fulfilled = *abi.ConvertType(out[2], new(bool)).(*bool) + + return *outstruct, err + +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasSession) SolverLockData() (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + return _Atlas.Contract.SolverLockData(&_Atlas.CallOpts) +} + +// SolverLockData is a free data retrieval call binding the contract method 0xaa7d2dc8. +// +// Solidity: function solverLockData() view returns(address currentSolver, bool calledBack, bool fulfilled) +func (_Atlas *AtlasCallerSession) SolverLockData() (struct { + CurrentSolver common.Address + CalledBack bool + Fulfilled bool +}, error) { + return _Atlas.Contract.SolverLockData(&_Atlas.CallOpts) +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasCaller) SolverOpHashes(opts *bind.CallOpts, opHash [32]byte) (bool, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "solverOpHashes", opHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasSession) SolverOpHashes(opHash [32]byte) (bool, error) { + return _Atlas.Contract.SolverOpHashes(&_Atlas.CallOpts, opHash) +} + +// SolverOpHashes is a free data retrieval call binding the contract method 0x6ef5ac7a. +// +// Solidity: function solverOpHashes(bytes32 opHash) view returns(bool) +func (_Atlas *AtlasCallerSession) SolverOpHashes(opHash [32]byte) (bool, error) { + return _Atlas.Contract.SolverOpHashes(&_Atlas.CallOpts, opHash) +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasCaller) SurchargeRecipient(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "surchargeRecipient") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasSession) SurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.SurchargeRecipient(&_Atlas.CallOpts) +} + +// SurchargeRecipient is a free data retrieval call binding the contract method 0xfc61c541. +// +// Solidity: function surchargeRecipient() view returns(address) +func (_Atlas *AtlasCallerSession) SurchargeRecipient() (common.Address, error) { + return _Atlas.Contract.SurchargeRecipient(&_Atlas.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasSession) Symbol() (string, error) { + return _Atlas.Contract.Symbol(&_Atlas.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_Atlas *AtlasCallerSession) Symbol() (string, error) { + return _Atlas.Contract.Symbol(&_Atlas.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasSession) TotalSupply() (*big.Int, error) { + return _Atlas.Contract.TotalSupply(&_Atlas.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_Atlas *AtlasCallerSession) TotalSupply() (*big.Int, error) { + return _Atlas.Contract.TotalSupply(&_Atlas.CallOpts) +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasCaller) UnbondingCompleteBlock(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _Atlas.contract.Call(opts, &out, "unbondingCompleteBlock", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasSession) UnbondingCompleteBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.UnbondingCompleteBlock(&_Atlas.CallOpts, account) +} + +// UnbondingCompleteBlock is a free data retrieval call binding the contract method 0x5270182c. +// +// Solidity: function unbondingCompleteBlock(address account) view returns(uint256) +func (_Atlas *AtlasCallerSession) UnbondingCompleteBlock(account common.Address) (*big.Int, error) { + return _Atlas.Contract.UnbondingCompleteBlock(&_Atlas.CallOpts, account) +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasTransactor) BecomeSurchargeRecipient(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "becomeSurchargeRecipient") +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasSession) BecomeSurchargeRecipient() (*types.Transaction, error) { + return _Atlas.Contract.BecomeSurchargeRecipient(&_Atlas.TransactOpts) +} + +// BecomeSurchargeRecipient is a paid mutator transaction binding the contract method 0x8ebf091f. +// +// Solidity: function becomeSurchargeRecipient() returns() +func (_Atlas *AtlasTransactorSession) BecomeSurchargeRecipient() (*types.Transaction, error) { + return _Atlas.Contract.BecomeSurchargeRecipient(&_Atlas.TransactOpts) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Bond(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "bond", amount) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasSession) Bond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Bond(&_Atlas.TransactOpts, amount) +} + +// Bond is a paid mutator transaction binding the contract method 0x9940686e. +// +// Solidity: function bond(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Bond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Bond(&_Atlas.TransactOpts, amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasTransactor) Borrow(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "borrow", amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasSession) Borrow(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Borrow(&_Atlas.TransactOpts, amount) +} + +// Borrow is a paid mutator transaction binding the contract method 0xc5ebeaec. +// +// Solidity: function borrow(uint256 amount) payable returns() +func (_Atlas *AtlasTransactorSession) Borrow(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Borrow(&_Atlas.TransactOpts, amount) +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasTransactor) Contribute(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "contribute") +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasSession) Contribute() (*types.Transaction, error) { + return _Atlas.Contract.Contribute(&_Atlas.TransactOpts) +} + +// Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba. +// +// Solidity: function contribute() payable returns() +func (_Atlas *AtlasTransactorSession) Contribute() (*types.Transaction, error) { + return _Atlas.Contract.Contribute(&_Atlas.TransactOpts) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasTransactor) CreateExecutionEnvironment(opts *bind.TransactOpts, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "createExecutionEnvironment", user, control) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasSession) CreateExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.CreateExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// CreateExecutionEnvironment is a paid mutator transaction binding the contract method 0x7e29c684. +// +// Solidity: function createExecutionEnvironment(address user, address control) returns(address executionEnvironment) +func (_Atlas *AtlasTransactorSession) CreateExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.CreateExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasTransactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasSession) Deposit() (*types.Transaction, error) { + return _Atlas.Contract.Deposit(&_Atlas.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_Atlas *AtlasTransactorSession) Deposit() (*types.Transaction, error) { + return _Atlas.Contract.Deposit(&_Atlas.TransactOpts) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasTransactor) DepositAndBond(opts *bind.TransactOpts, amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "depositAndBond", amountToBond) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasSession) DepositAndBond(amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.DepositAndBond(&_Atlas.TransactOpts, amountToBond) +} + +// DepositAndBond is a paid mutator transaction binding the contract method 0xf05f88e0. +// +// Solidity: function depositAndBond(uint256 amountToBond) payable returns() +func (_Atlas *AtlasTransactorSession) DepositAndBond(amountToBond *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.DepositAndBond(&_Atlas.TransactOpts, amountToBond) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasTransactor) Execute(opts *bind.TransactOpts, dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "execute", dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasSession) Execute(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.Contract.Execute(&_Atlas.TransactOpts, dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// Execute is a paid mutator transaction binding the contract method 0x79efd184. +// +// Solidity: function execute((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, address executionEnvironment, address bundler, bytes32 userOpHash, bool isSimulation) payable returns((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx) +func (_Atlas *AtlasTransactorSession) Execute(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, executionEnvironment common.Address, bundler common.Address, userOpHash [32]byte, isSimulation bool) (*types.Transaction, error) { + return _Atlas.Contract.Execute(&_Atlas.TransactOpts, dConfig, userOp, solverOps, executionEnvironment, bundler, userOpHash, isSimulation) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasTransactor) GetExecutionEnvironment(opts *bind.TransactOpts, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "getExecutionEnvironment", user, control) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasSession) GetExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.GetExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// GetExecutionEnvironment is a paid mutator transaction binding the contract method 0x45112906. +// +// Solidity: function getExecutionEnvironment(address user, address control) returns(address executionEnvironment, uint32 callConfig, bool exists) +func (_Atlas *AtlasTransactorSession) GetExecutionEnvironment(user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.GetExecutionEnvironment(&_Atlas.TransactOpts, user, control) +} + +// Metacall is a paid mutator transaction binding the contract method 0x0baf1745. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, address gasRefundBeneficiary) payable returns(bool auctionWon) +func (_Atlas *AtlasTransactor) Metacall(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, gasRefundBeneficiary common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "metacall", userOp, solverOps, dAppOp, gasRefundBeneficiary) +} + +// Metacall is a paid mutator transaction binding the contract method 0x0baf1745. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, address gasRefundBeneficiary) payable returns(bool auctionWon) +func (_Atlas *AtlasSession) Metacall(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, gasRefundBeneficiary common.Address) (*types.Transaction, error) { + return _Atlas.Contract.Metacall(&_Atlas.TransactOpts, userOp, solverOps, dAppOp, gasRefundBeneficiary) +} + +// Metacall is a paid mutator transaction binding the contract method 0x0baf1745. +// +// Solidity: function metacall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, address gasRefundBeneficiary) payable returns(bool auctionWon) +func (_Atlas *AtlasTransactorSession) Metacall(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, gasRefundBeneficiary common.Address) (*types.Transaction, error) { + return _Atlas.Contract.Metacall(&_Atlas.TransactOpts, userOp, solverOps, dAppOp, gasRefundBeneficiary) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasTransactor) Reconcile(opts *bind.TransactOpts, maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "reconcile", maxApprovedGasSpend) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasSession) Reconcile(maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Reconcile(&_Atlas.TransactOpts, maxApprovedGasSpend) +} + +// Reconcile is a paid mutator transaction binding the contract method 0xf68b84f7. +// +// Solidity: function reconcile(uint256 maxApprovedGasSpend) payable returns(uint256 owed) +func (_Atlas *AtlasTransactorSession) Reconcile(maxApprovedGasSpend *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Reconcile(&_Atlas.TransactOpts, maxApprovedGasSpend) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Redeem(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "redeem", amount) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasSession) Redeem(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Redeem(&_Atlas.TransactOpts, amount) +} + +// Redeem is a paid mutator transaction binding the contract method 0xdb006a75. +// +// Solidity: function redeem(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Redeem(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Redeem(&_Atlas.TransactOpts, amount) +} + +// SetSurchargeRates is a paid mutator transaction binding the contract method 0x522bc026. +// +// Solidity: function setSurchargeRates(uint256 newAtlasRate, uint256 newBundlerRate) returns() +func (_Atlas *AtlasTransactor) SetSurchargeRates(opts *bind.TransactOpts, newAtlasRate *big.Int, newBundlerRate *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "setSurchargeRates", newAtlasRate, newBundlerRate) +} + +// SetSurchargeRates is a paid mutator transaction binding the contract method 0x522bc026. +// +// Solidity: function setSurchargeRates(uint256 newAtlasRate, uint256 newBundlerRate) returns() +func (_Atlas *AtlasSession) SetSurchargeRates(newAtlasRate *big.Int, newBundlerRate *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.SetSurchargeRates(&_Atlas.TransactOpts, newAtlasRate, newBundlerRate) +} + +// SetSurchargeRates is a paid mutator transaction binding the contract method 0x522bc026. +// +// Solidity: function setSurchargeRates(uint256 newAtlasRate, uint256 newBundlerRate) returns() +func (_Atlas *AtlasTransactorSession) SetSurchargeRates(newAtlasRate *big.Int, newBundlerRate *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.SetSurchargeRates(&_Atlas.TransactOpts, newAtlasRate, newBundlerRate) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasTransactor) SolverCall(opts *bind.TransactOpts, ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "solverCall", ctx, solverOp, bidAmount, returnData) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasSession) SolverCall(ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.Contract.SolverCall(&_Atlas.TransactOpts, ctx, solverOp, bidAmount, returnData) +} + +// SolverCall is a paid mutator transaction binding the contract method 0x966a1f9a. +// +// Solidity: function solverCall((bytes32,address,uint24,uint8,uint8,uint8,uint8,bool,bool,bool,bool,address) ctx, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, uint256 bidAmount, bytes returnData) payable returns((uint256,uint256,uint256,bool,bool) solverTracker) +func (_Atlas *AtlasTransactorSession) SolverCall(ctx Context, solverOp SolverOperation, bidAmount *big.Int, returnData []byte) (*types.Transaction, error) { + return _Atlas.Contract.SolverCall(&_Atlas.TransactOpts, ctx, solverOp, bidAmount, returnData) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactor) TransferDAppERC20(opts *bind.TransactOpts, token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferDAppERC20", token, destination, amount, user, control) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasSession) TransferDAppERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferDAppERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferDAppERC20 is a paid mutator transaction binding the contract method 0xb2c5c510. +// +// Solidity: function transferDAppERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactorSession) TransferDAppERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferDAppERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasTransactor) TransferSurchargeRecipient(opts *bind.TransactOpts, newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferSurchargeRecipient", newRecipient) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasSession) TransferSurchargeRecipient(newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferSurchargeRecipient(&_Atlas.TransactOpts, newRecipient) +} + +// TransferSurchargeRecipient is a paid mutator transaction binding the contract method 0xa0531b02. +// +// Solidity: function transferSurchargeRecipient(address newRecipient) returns() +func (_Atlas *AtlasTransactorSession) TransferSurchargeRecipient(newRecipient common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferSurchargeRecipient(&_Atlas.TransactOpts, newRecipient) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactor) TransferUserERC20(opts *bind.TransactOpts, token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "transferUserERC20", token, destination, amount, user, control) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasSession) TransferUserERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferUserERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// TransferUserERC20 is a paid mutator transaction binding the contract method 0x234b7ede. +// +// Solidity: function transferUserERC20(address token, address destination, uint256 amount, address user, address control) returns() +func (_Atlas *AtlasTransactorSession) TransferUserERC20(token common.Address, destination common.Address, amount *big.Int, user common.Address, control common.Address) (*types.Transaction, error) { + return _Atlas.Contract.TransferUserERC20(&_Atlas.TransactOpts, token, destination, amount, user, control) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Unbond(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "unbond", amount) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasSession) Unbond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Unbond(&_Atlas.TransactOpts, amount) +} + +// Unbond is a paid mutator transaction binding the contract method 0x27de9e32. +// +// Solidity: function unbond(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Unbond(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Unbond(&_Atlas.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasTransactor) Withdraw(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "withdraw", amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasSession) Withdraw(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Withdraw(&_Atlas.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_Atlas *AtlasTransactorSession) Withdraw(amount *big.Int) (*types.Transaction, error) { + return _Atlas.Contract.Withdraw(&_Atlas.TransactOpts, amount) +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasTransactor) WithdrawSurcharge(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.Transact(opts, "withdrawSurcharge") +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasSession) WithdrawSurcharge() (*types.Transaction, error) { + return _Atlas.Contract.WithdrawSurcharge(&_Atlas.TransactOpts) +} + +// WithdrawSurcharge is a paid mutator transaction binding the contract method 0xc41d54da. +// +// Solidity: function withdrawSurcharge() returns() +func (_Atlas *AtlasTransactorSession) WithdrawSurcharge() (*types.Transaction, error) { + return _Atlas.Contract.WithdrawSurcharge(&_Atlas.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Atlas.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasSession) Receive() (*types.Transaction, error) { + return _Atlas.Contract.Receive(&_Atlas.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Atlas *AtlasTransactorSession) Receive() (*types.Transaction, error) { + return _Atlas.Contract.Receive(&_Atlas.TransactOpts) +} + +// AtlasBondIterator is returned from FilterBond and is used to iterate over the raw logs and unpacked data for Bond events raised by the Atlas contract. +type AtlasBondIterator struct { + Event *AtlasBond // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasBondIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasBond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasBond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasBondIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasBondIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasBond represents a Bond event raised by the Atlas contract. +type AtlasBond struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBond is a free log retrieval operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) FilterBond(opts *bind.FilterOpts, owner []common.Address) (*AtlasBondIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Bond", ownerRule) + if err != nil { + return nil, err + } + return &AtlasBondIterator{contract: _Atlas.contract, event: "Bond", logs: logs, sub: sub}, nil +} + +// WatchBond is a free log subscription operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) WatchBond(opts *bind.WatchOpts, sink chan<- *AtlasBond, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Bond", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasBond) + if err := _Atlas.contract.UnpackLog(event, "Bond", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBond is a log parse operation binding the contract event 0x6b1d99469ed62a423d7e402bfa68a467261ca2229127c55045ee41e5d9a0f21d. +// +// Solidity: event Bond(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) ParseBond(log types.Log) (*AtlasBond, error) { + event := new(AtlasBond) + if err := _Atlas.contract.UnpackLog(event, "Bond", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the Atlas contract. +type AtlasBurnIterator struct { + Event *AtlasBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasBurn represents a Burn event raised by the Atlas contract. +type AtlasBurn struct { + From common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed from, uint256 amount) +func (_Atlas *AtlasFilterer) FilterBurn(opts *bind.FilterOpts, from []common.Address) (*AtlasBurnIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Burn", fromRule) + if err != nil { + return nil, err + } + return &AtlasBurnIterator{contract: _Atlas.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed from, uint256 amount) +func (_Atlas *AtlasFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *AtlasBurn, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Burn", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasBurn) + if err := _Atlas.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed from, uint256 amount) +func (_Atlas *AtlasFilterer) ParseBurn(log types.Log) (*AtlasBurn, error) { + event := new(AtlasBurn) + if err := _Atlas.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasDAppDisabledIterator is returned from FilterDAppDisabled and is used to iterate over the raw logs and unpacked data for DAppDisabled events raised by the Atlas contract. +type AtlasDAppDisabledIterator struct { + Event *AtlasDAppDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasDAppDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasDAppDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasDAppDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasDAppDisabled represents a DAppDisabled event raised by the Atlas contract. +type AtlasDAppDisabled struct { + Control common.Address + Governance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppDisabled is a free log retrieval operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterDAppDisabled(opts *bind.FilterOpts, control []common.Address, governance []common.Address) (*AtlasDAppDisabledIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return &AtlasDAppDisabledIterator{contract: _Atlas.contract, event: "DAppDisabled", logs: logs, sub: sub}, nil +} + +// WatchDAppDisabled is a free log subscription operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchDAppDisabled(opts *bind.WatchOpts, sink chan<- *AtlasDAppDisabled, control []common.Address, governance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasDAppDisabled) + if err := _Atlas.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppDisabled is a log parse operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseDAppDisabled(log types.Log) (*AtlasDAppDisabled, error) { + event := new(AtlasDAppDisabled) + if err := _Atlas.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasDAppGovernanceChangedIterator is returned from FilterDAppGovernanceChanged and is used to iterate over the raw logs and unpacked data for DAppGovernanceChanged events raised by the Atlas contract. +type AtlasDAppGovernanceChangedIterator struct { + Event *AtlasDAppGovernanceChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasDAppGovernanceChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasDAppGovernanceChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasDAppGovernanceChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasDAppGovernanceChanged represents a DAppGovernanceChanged event raised by the Atlas contract. +type AtlasDAppGovernanceChanged struct { + Control common.Address + OldGovernance common.Address + NewGovernance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppGovernanceChanged is a free log retrieval operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterDAppGovernanceChanged(opts *bind.FilterOpts, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (*AtlasDAppGovernanceChangedIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasDAppGovernanceChangedIterator{contract: _Atlas.contract, event: "DAppGovernanceChanged", logs: logs, sub: sub}, nil +} + +// WatchDAppGovernanceChanged is a free log subscription operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchDAppGovernanceChanged(opts *bind.WatchOpts, sink chan<- *AtlasDAppGovernanceChanged, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasDAppGovernanceChanged) + if err := _Atlas.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppGovernanceChanged is a log parse operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseDAppGovernanceChanged(log types.Log) (*AtlasDAppGovernanceChanged, error) { + event := new(AtlasDAppGovernanceChanged) + if err := _Atlas.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasExecutionEnvironmentCreatedIterator is returned from FilterExecutionEnvironmentCreated and is used to iterate over the raw logs and unpacked data for ExecutionEnvironmentCreated events raised by the Atlas contract. +type AtlasExecutionEnvironmentCreatedIterator struct { + Event *AtlasExecutionEnvironmentCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasExecutionEnvironmentCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasExecutionEnvironmentCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasExecutionEnvironmentCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasExecutionEnvironmentCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasExecutionEnvironmentCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasExecutionEnvironmentCreated represents a ExecutionEnvironmentCreated event raised by the Atlas contract. +type AtlasExecutionEnvironmentCreated struct { + User common.Address + ExecutionEnvironment common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutionEnvironmentCreated is a free log retrieval operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) FilterExecutionEnvironmentCreated(opts *bind.FilterOpts, user []common.Address, executionEnvironment []common.Address) (*AtlasExecutionEnvironmentCreatedIterator, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var executionEnvironmentRule []interface{} + for _, executionEnvironmentItem := range executionEnvironment { + executionEnvironmentRule = append(executionEnvironmentRule, executionEnvironmentItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "ExecutionEnvironmentCreated", userRule, executionEnvironmentRule) + if err != nil { + return nil, err + } + return &AtlasExecutionEnvironmentCreatedIterator{contract: _Atlas.contract, event: "ExecutionEnvironmentCreated", logs: logs, sub: sub}, nil +} + +// WatchExecutionEnvironmentCreated is a free log subscription operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) WatchExecutionEnvironmentCreated(opts *bind.WatchOpts, sink chan<- *AtlasExecutionEnvironmentCreated, user []common.Address, executionEnvironment []common.Address) (event.Subscription, error) { + + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + var executionEnvironmentRule []interface{} + for _, executionEnvironmentItem := range executionEnvironment { + executionEnvironmentRule = append(executionEnvironmentRule, executionEnvironmentItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "ExecutionEnvironmentCreated", userRule, executionEnvironmentRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasExecutionEnvironmentCreated) + if err := _Atlas.contract.UnpackLog(event, "ExecutionEnvironmentCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutionEnvironmentCreated is a log parse operation binding the contract event 0x6ed96358b086d2aca68c2e2e4dc23fb45421ac513a7fc3127e34569833b3c646. +// +// Solidity: event ExecutionEnvironmentCreated(address indexed user, address indexed executionEnvironment) +func (_Atlas *AtlasFilterer) ParseExecutionEnvironmentCreated(log types.Log) (*AtlasExecutionEnvironmentCreated, error) { + event := new(AtlasExecutionEnvironmentCreated) + if err := _Atlas.contract.UnpackLog(event, "ExecutionEnvironmentCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasGovernanceTransferStartedIterator is returned from FilterGovernanceTransferStarted and is used to iterate over the raw logs and unpacked data for GovernanceTransferStarted events raised by the Atlas contract. +type AtlasGovernanceTransferStartedIterator struct { + Event *AtlasGovernanceTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasGovernanceTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasGovernanceTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasGovernanceTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasGovernanceTransferStarted represents a GovernanceTransferStarted event raised by the Atlas contract. +type AtlasGovernanceTransferStarted struct { + PreviousGovernance common.Address + NewGovernance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGovernanceTransferStarted is a free log retrieval operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) FilterGovernanceTransferStarted(opts *bind.FilterOpts, previousGovernance []common.Address, newGovernance []common.Address) (*AtlasGovernanceTransferStartedIterator, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "GovernanceTransferStarted", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasGovernanceTransferStartedIterator{contract: _Atlas.contract, event: "GovernanceTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchGovernanceTransferStarted is a free log subscription operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) WatchGovernanceTransferStarted(opts *bind.WatchOpts, sink chan<- *AtlasGovernanceTransferStarted, previousGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "GovernanceTransferStarted", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasGovernanceTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGovernanceTransferStarted is a log parse operation binding the contract event 0x1c4bb4e3cab7b72da7eb9f0ae62554dda85dc7fb907c946ad2776095b95ac1ad. +// +// Solidity: event GovernanceTransferStarted(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) ParseGovernanceTransferStarted(log types.Log) (*AtlasGovernanceTransferStarted, error) { + event := new(AtlasGovernanceTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasGovernanceTransferredIterator is returned from FilterGovernanceTransferred and is used to iterate over the raw logs and unpacked data for GovernanceTransferred events raised by the Atlas contract. +type AtlasGovernanceTransferredIterator struct { + Event *AtlasGovernanceTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasGovernanceTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasGovernanceTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasGovernanceTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasGovernanceTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasGovernanceTransferred represents a GovernanceTransferred event raised by the Atlas contract. +type AtlasGovernanceTransferred struct { + PreviousGovernance common.Address + NewGovernance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGovernanceTransferred is a free log retrieval operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) FilterGovernanceTransferred(opts *bind.FilterOpts, previousGovernance []common.Address, newGovernance []common.Address) (*AtlasGovernanceTransferredIterator, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "GovernanceTransferred", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasGovernanceTransferredIterator{contract: _Atlas.contract, event: "GovernanceTransferred", logs: logs, sub: sub}, nil +} + +// WatchGovernanceTransferred is a free log subscription operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) WatchGovernanceTransferred(opts *bind.WatchOpts, sink chan<- *AtlasGovernanceTransferred, previousGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var previousGovernanceRule []interface{} + for _, previousGovernanceItem := range previousGovernance { + previousGovernanceRule = append(previousGovernanceRule, previousGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "GovernanceTransferred", previousGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasGovernanceTransferred) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGovernanceTransferred is a log parse operation binding the contract event 0x5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80. +// +// Solidity: event GovernanceTransferred(address indexed previousGovernance, address indexed newGovernance) +func (_Atlas *AtlasFilterer) ParseGovernanceTransferred(log types.Log) (*AtlasGovernanceTransferred, error) { + event := new(AtlasGovernanceTransferred) + if err := _Atlas.contract.UnpackLog(event, "GovernanceTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasMetacallResultIterator is returned from FilterMetacallResult and is used to iterate over the raw logs and unpacked data for MetacallResult events raised by the Atlas contract. +type AtlasMetacallResultIterator struct { + Event *AtlasMetacallResult // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasMetacallResultIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasMetacallResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasMetacallResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasMetacallResultIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasMetacallResultIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasMetacallResult represents a MetacallResult event raised by the Atlas contract. +type AtlasMetacallResult struct { + Bundler common.Address + User common.Address + SolverSuccessful bool + DisbursementSuccessful bool + EthPaidToBundler *big.Int + NetGasSurcharge *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMetacallResult is a free log retrieval operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) FilterMetacallResult(opts *bind.FilterOpts, bundler []common.Address, user []common.Address) (*AtlasMetacallResultIterator, error) { + + var bundlerRule []interface{} + for _, bundlerItem := range bundler { + bundlerRule = append(bundlerRule, bundlerItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "MetacallResult", bundlerRule, userRule) + if err != nil { + return nil, err + } + return &AtlasMetacallResultIterator{contract: _Atlas.contract, event: "MetacallResult", logs: logs, sub: sub}, nil +} + +// WatchMetacallResult is a free log subscription operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) WatchMetacallResult(opts *bind.WatchOpts, sink chan<- *AtlasMetacallResult, bundler []common.Address, user []common.Address) (event.Subscription, error) { + + var bundlerRule []interface{} + for _, bundlerItem := range bundler { + bundlerRule = append(bundlerRule, bundlerItem) + } + var userRule []interface{} + for _, userItem := range user { + userRule = append(userRule, userItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "MetacallResult", bundlerRule, userRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasMetacallResult) + if err := _Atlas.contract.UnpackLog(event, "MetacallResult", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMetacallResult is a log parse operation binding the contract event 0xde0b67c553d23d5f8bb4c6305ceb7112ee27f974197bee8c02502a7e36cff063. +// +// Solidity: event MetacallResult(address indexed bundler, address indexed user, bool solverSuccessful, bool disbursementSuccessful, uint256 ethPaidToBundler, uint256 netGasSurcharge) +func (_Atlas *AtlasFilterer) ParseMetacallResult(log types.Log) (*AtlasMetacallResult, error) { + event := new(AtlasMetacallResult) + if err := _Atlas.contract.UnpackLog(event, "MetacallResult", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the Atlas contract. +type AtlasMintIterator struct { + Event *AtlasMint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasMintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasMint represents a Mint event raised by the Atlas contract. +type AtlasMint struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. +// +// Solidity: event Mint(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) FilterMint(opts *bind.FilterOpts, to []common.Address) (*AtlasMintIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Mint", toRule) + if err != nil { + return nil, err + } + return &AtlasMintIterator{contract: _Atlas.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. +// +// Solidity: event Mint(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *AtlasMint, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Mint", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasMint) + if err := _Atlas.contract.UnpackLog(event, "Mint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMint is a log parse operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. +// +// Solidity: event Mint(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) ParseMint(log types.Log) (*AtlasMint, error) { + event := new(AtlasMint) + if err := _Atlas.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasNewDAppSignatoryIterator is returned from FilterNewDAppSignatory and is used to iterate over the raw logs and unpacked data for NewDAppSignatory events raised by the Atlas contract. +type AtlasNewDAppSignatoryIterator struct { + Event *AtlasNewDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasNewDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasNewDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasNewDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasNewDAppSignatory represents a NewDAppSignatory event raised by the Atlas contract. +type AtlasNewDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDAppSignatory is a free log retrieval operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterNewDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasNewDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasNewDAppSignatoryIterator{contract: _Atlas.contract, event: "NewDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchNewDAppSignatory is a free log subscription operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchNewDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasNewDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasNewDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewDAppSignatory is a log parse operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseNewDAppSignatory(log types.Log) (*AtlasNewDAppSignatory, error) { + event := new(AtlasNewDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasRedeemIterator is returned from FilterRedeem and is used to iterate over the raw logs and unpacked data for Redeem events raised by the Atlas contract. +type AtlasRedeemIterator struct { + Event *AtlasRedeem // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasRedeemIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasRedeem) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasRedeem) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasRedeemIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasRedeemIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasRedeem represents a Redeem event raised by the Atlas contract. +type AtlasRedeem struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRedeem is a free log retrieval operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) FilterRedeem(opts *bind.FilterOpts, owner []common.Address) (*AtlasRedeemIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Redeem", ownerRule) + if err != nil { + return nil, err + } + return &AtlasRedeemIterator{contract: _Atlas.contract, event: "Redeem", logs: logs, sub: sub}, nil +} + +// WatchRedeem is a free log subscription operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) WatchRedeem(opts *bind.WatchOpts, sink chan<- *AtlasRedeem, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Redeem", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasRedeem) + if err := _Atlas.contract.UnpackLog(event, "Redeem", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRedeem is a log parse operation binding the contract event 0x222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6. +// +// Solidity: event Redeem(address indexed owner, uint256 amount) +func (_Atlas *AtlasFilterer) ParseRedeem(log types.Log) (*AtlasRedeem, error) { + event := new(AtlasRedeem) + if err := _Atlas.contract.UnpackLog(event, "Redeem", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasRemovedDAppSignatoryIterator is returned from FilterRemovedDAppSignatory and is used to iterate over the raw logs and unpacked data for RemovedDAppSignatory events raised by the Atlas contract. +type AtlasRemovedDAppSignatoryIterator struct { + Event *AtlasRemovedDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasRemovedDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasRemovedDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasRemovedDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasRemovedDAppSignatory represents a RemovedDAppSignatory event raised by the Atlas contract. +type AtlasRemovedDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRemovedDAppSignatory is a free log retrieval operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) FilterRemovedDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasRemovedDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasRemovedDAppSignatoryIterator{contract: _Atlas.contract, event: "RemovedDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchRemovedDAppSignatory is a free log subscription operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) WatchRemovedDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasRemovedDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasRemovedDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRemovedDAppSignatory is a log parse operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_Atlas *AtlasFilterer) ParseRemovedDAppSignatory(log types.Log) (*AtlasRemovedDAppSignatory, error) { + event := new(AtlasRemovedDAppSignatory) + if err := _Atlas.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSolverTxResultIterator is returned from FilterSolverTxResult and is used to iterate over the raw logs and unpacked data for SolverTxResult events raised by the Atlas contract. +type AtlasSolverTxResultIterator struct { + Event *AtlasSolverTxResult // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSolverTxResultIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSolverTxResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSolverTxResult) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSolverTxResultIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSolverTxResultIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSolverTxResult represents a SolverTxResult event raised by the Atlas contract. +type AtlasSolverTxResult struct { + SolverTo common.Address + SolverFrom common.Address + DAppControl common.Address + BidToken common.Address + BidAmount *big.Int + Executed bool + Success bool + Result *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSolverTxResult is a free log retrieval operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) FilterSolverTxResult(opts *bind.FilterOpts, solverTo []common.Address, solverFrom []common.Address, dAppControl []common.Address) (*AtlasSolverTxResultIterator, error) { + + var solverToRule []interface{} + for _, solverToItem := range solverTo { + solverToRule = append(solverToRule, solverToItem) + } + var solverFromRule []interface{} + for _, solverFromItem := range solverFrom { + solverFromRule = append(solverFromRule, solverFromItem) + } + var dAppControlRule []interface{} + for _, dAppControlItem := range dAppControl { + dAppControlRule = append(dAppControlRule, dAppControlItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SolverTxResult", solverToRule, solverFromRule, dAppControlRule) + if err != nil { + return nil, err + } + return &AtlasSolverTxResultIterator{contract: _Atlas.contract, event: "SolverTxResult", logs: logs, sub: sub}, nil +} + +// WatchSolverTxResult is a free log subscription operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) WatchSolverTxResult(opts *bind.WatchOpts, sink chan<- *AtlasSolverTxResult, solverTo []common.Address, solverFrom []common.Address, dAppControl []common.Address) (event.Subscription, error) { + + var solverToRule []interface{} + for _, solverToItem := range solverTo { + solverToRule = append(solverToRule, solverToItem) + } + var solverFromRule []interface{} + for _, solverFromItem := range solverFrom { + solverFromRule = append(solverFromRule, solverFromItem) + } + var dAppControlRule []interface{} + for _, dAppControlItem := range dAppControl { + dAppControlRule = append(dAppControlRule, dAppControlItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SolverTxResult", solverToRule, solverFromRule, dAppControlRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSolverTxResult) + if err := _Atlas.contract.UnpackLog(event, "SolverTxResult", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSolverTxResult is a log parse operation binding the contract event 0x94e79da376f3bc5202c947c2466a329832d3e9af2f4e094a18c160868453273c. +// +// Solidity: event SolverTxResult(address indexed solverTo, address indexed solverFrom, address indexed dAppControl, address bidToken, uint256 bidAmount, bool executed, bool success, uint256 result) +func (_Atlas *AtlasFilterer) ParseSolverTxResult(log types.Log) (*AtlasSolverTxResult, error) { + event := new(AtlasSolverTxResult) + if err := _Atlas.contract.UnpackLog(event, "SolverTxResult", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeRecipientTransferStartedIterator is returned from FilterSurchargeRecipientTransferStarted and is used to iterate over the raw logs and unpacked data for SurchargeRecipientTransferStarted events raised by the Atlas contract. +type AtlasSurchargeRecipientTransferStartedIterator struct { + Event *AtlasSurchargeRecipientTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeRecipientTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeRecipientTransferStarted represents a SurchargeRecipientTransferStarted event raised by the Atlas contract. +type AtlasSurchargeRecipientTransferStarted struct { + CurrentRecipient common.Address + NewRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeRecipientTransferStarted is a free log retrieval operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address indexed currentRecipient, address indexed newRecipient) +func (_Atlas *AtlasFilterer) FilterSurchargeRecipientTransferStarted(opts *bind.FilterOpts, currentRecipient []common.Address, newRecipient []common.Address) (*AtlasSurchargeRecipientTransferStartedIterator, error) { + + var currentRecipientRule []interface{} + for _, currentRecipientItem := range currentRecipient { + currentRecipientRule = append(currentRecipientRule, currentRecipientItem) + } + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeRecipientTransferStarted", currentRecipientRule, newRecipientRule) + if err != nil { + return nil, err + } + return &AtlasSurchargeRecipientTransferStartedIterator{contract: _Atlas.contract, event: "SurchargeRecipientTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchSurchargeRecipientTransferStarted is a free log subscription operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address indexed currentRecipient, address indexed newRecipient) +func (_Atlas *AtlasFilterer) WatchSurchargeRecipientTransferStarted(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeRecipientTransferStarted, currentRecipient []common.Address, newRecipient []common.Address) (event.Subscription, error) { + + var currentRecipientRule []interface{} + for _, currentRecipientItem := range currentRecipient { + currentRecipientRule = append(currentRecipientRule, currentRecipientItem) + } + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeRecipientTransferStarted", currentRecipientRule, newRecipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeRecipientTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeRecipientTransferStarted is a log parse operation binding the contract event 0xfc722bcd56a71612cd14b287fbf50545429e6c9e8de86ea7c3febdecd34882fd. +// +// Solidity: event SurchargeRecipientTransferStarted(address indexed currentRecipient, address indexed newRecipient) +func (_Atlas *AtlasFilterer) ParseSurchargeRecipientTransferStarted(log types.Log) (*AtlasSurchargeRecipientTransferStarted, error) { + event := new(AtlasSurchargeRecipientTransferStarted) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeRecipientTransferredIterator is returned from FilterSurchargeRecipientTransferred and is used to iterate over the raw logs and unpacked data for SurchargeRecipientTransferred events raised by the Atlas contract. +type AtlasSurchargeRecipientTransferredIterator struct { + Event *AtlasSurchargeRecipientTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeRecipientTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeRecipientTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeRecipientTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeRecipientTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeRecipientTransferred represents a SurchargeRecipientTransferred event raised by the Atlas contract. +type AtlasSurchargeRecipientTransferred struct { + NewRecipient common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeRecipientTransferred is a free log retrieval operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address indexed newRecipient) +func (_Atlas *AtlasFilterer) FilterSurchargeRecipientTransferred(opts *bind.FilterOpts, newRecipient []common.Address) (*AtlasSurchargeRecipientTransferredIterator, error) { + + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeRecipientTransferred", newRecipientRule) + if err != nil { + return nil, err + } + return &AtlasSurchargeRecipientTransferredIterator{contract: _Atlas.contract, event: "SurchargeRecipientTransferred", logs: logs, sub: sub}, nil +} + +// WatchSurchargeRecipientTransferred is a free log subscription operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address indexed newRecipient) +func (_Atlas *AtlasFilterer) WatchSurchargeRecipientTransferred(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeRecipientTransferred, newRecipient []common.Address) (event.Subscription, error) { + + var newRecipientRule []interface{} + for _, newRecipientItem := range newRecipient { + newRecipientRule = append(newRecipientRule, newRecipientItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeRecipientTransferred", newRecipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeRecipientTransferred) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeRecipientTransferred is a log parse operation binding the contract event 0x53960c2e64e72b2c1326635f0c002d5cf63e7844d12ed107404693fedde43985. +// +// Solidity: event SurchargeRecipientTransferred(address indexed newRecipient) +func (_Atlas *AtlasFilterer) ParseSurchargeRecipientTransferred(log types.Log) (*AtlasSurchargeRecipientTransferred, error) { + event := new(AtlasSurchargeRecipientTransferred) + if err := _Atlas.contract.UnpackLog(event, "SurchargeRecipientTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasSurchargeWithdrawnIterator is returned from FilterSurchargeWithdrawn and is used to iterate over the raw logs and unpacked data for SurchargeWithdrawn events raised by the Atlas contract. +type AtlasSurchargeWithdrawnIterator struct { + Event *AtlasSurchargeWithdrawn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasSurchargeWithdrawnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasSurchargeWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasSurchargeWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasSurchargeWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasSurchargeWithdrawn represents a SurchargeWithdrawn event raised by the Atlas contract. +type AtlasSurchargeWithdrawn struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSurchargeWithdrawn is a free log retrieval operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) FilterSurchargeWithdrawn(opts *bind.FilterOpts, to []common.Address) (*AtlasSurchargeWithdrawnIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "SurchargeWithdrawn", toRule) + if err != nil { + return nil, err + } + return &AtlasSurchargeWithdrawnIterator{contract: _Atlas.contract, event: "SurchargeWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchSurchargeWithdrawn is a free log subscription operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) WatchSurchargeWithdrawn(opts *bind.WatchOpts, sink chan<- *AtlasSurchargeWithdrawn, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "SurchargeWithdrawn", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasSurchargeWithdrawn) + if err := _Atlas.contract.UnpackLog(event, "SurchargeWithdrawn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSurchargeWithdrawn is a log parse operation binding the contract event 0x87fa2ce024d3bdae31517696c13905fc0882bc1b4f4508060eb29358056de22b. +// +// Solidity: event SurchargeWithdrawn(address indexed to, uint256 amount) +func (_Atlas *AtlasFilterer) ParseSurchargeWithdrawn(log types.Log) (*AtlasSurchargeWithdrawn, error) { + event := new(AtlasSurchargeWithdrawn) + if err := _Atlas.contract.UnpackLog(event, "SurchargeWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasUnbondIterator is returned from FilterUnbond and is used to iterate over the raw logs and unpacked data for Unbond events raised by the Atlas contract. +type AtlasUnbondIterator struct { + Event *AtlasUnbond // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasUnbondIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasUnbond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasUnbond) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasUnbondIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasUnbondIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasUnbond represents a Unbond event raised by the Atlas contract. +type AtlasUnbond struct { + Owner common.Address + Amount *big.Int + EarliestAvailable *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnbond is a free log retrieval operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) FilterUnbond(opts *bind.FilterOpts, owner []common.Address) (*AtlasUnbondIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.FilterLogs(opts, "Unbond", ownerRule) + if err != nil { + return nil, err + } + return &AtlasUnbondIterator{contract: _Atlas.contract, event: "Unbond", logs: logs, sub: sub}, nil +} + +// WatchUnbond is a free log subscription operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) WatchUnbond(opts *bind.WatchOpts, sink chan<- *AtlasUnbond, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _Atlas.contract.WatchLogs(opts, "Unbond", ownerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasUnbond) + if err := _Atlas.contract.UnpackLog(event, "Unbond", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnbond is a log parse operation binding the contract event 0x7659747cd8571f1071eea946fdc648adcf181cad916f32a05f82c3a525976048. +// +// Solidity: event Unbond(address indexed owner, uint256 amount, uint256 earliestAvailable) +func (_Atlas *AtlasFilterer) ParseUnbond(log types.Log) (*AtlasUnbond, error) { + event := new(AtlasUnbond) + if err := _Atlas.contract.UnpackLog(event, "Unbond", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/atlasverification/1.3/abi.json b/contract/atlasverification/1.3/abi.json new file mode 100644 index 0000000..897351d --- /dev/null +++ b/contract/atlasverification/1.3/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[{"name":"atlas","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"ATLAS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"addSignatory","inputs":[{"name":"control","type":"address","internalType":"address"},{"name":"signatory","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeDAppGovernance","inputs":[{"name":"oldGovernance","type":"address","internalType":"address"},{"name":"newGovernance","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dAppSequentialNonceTrackers","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"lastUsedSeqNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"dAppSignatories","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"disableDApp","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getDAppNextNonce","inputs":[{"name":"dApp","type":"address","internalType":"address"}],"outputs":[{"name":"nextNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDAppOperationPayload","inputs":[{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"payload","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getDomainSeparator","inputs":[],"outputs":[{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getGovFromControl","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getSolverPayload","inputs":[{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"payload","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getUserNextNonSeqNonceAfter","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"refNonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserNextNonce","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"sequential","type":"bool","internalType":"bool"}],"outputs":[{"name":"nextNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserOperationHash","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"userOpHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getUserOperationPayload","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"payload","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeGovernance","inputs":[{"name":"control","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDAppSignatory","inputs":[{"name":"control","type":"address","internalType":"address"},{"name":"signatory","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeSignatory","inputs":[{"name":"control","type":"address","internalType":"address"},{"name":"signatory","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signatories","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"userNonSequentialNonceTrackers","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"wordIndex","type":"uint248","internalType":"uint248"}],"outputs":[{"name":"bitmap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"userSequentialNonceTrackers","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"lastUsedSeqNonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validateCalls","inputs":[{"name":"dConfig","type":"tuple","internalType":"struct DAppConfig","components":[{"name":"to","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"solverGasLimit","type":"uint32","internalType":"uint32"}]},{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"isSimulation","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}],"stateMutability":"nonpayable"},{"type":"function","name":"verifyCallConfig","inputs":[{"name":"callConfig","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}],"stateMutability":"pure"},{"type":"function","name":"verifySolverOp","inputs":[{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"userMaxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"bundler","type":"address","internalType":"address"},{"name":"allowsTrustedOpHash","type":"bool","internalType":"bool"}],"outputs":[{"name":"result","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"DAppDisabled","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"DAppGovernanceChanged","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"oldGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"newGovernance","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"NewDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"RemovedDAppSignatory","inputs":[{"name":"control","type":"address","indexed":true,"internalType":"address"},{"name":"governance","type":"address","indexed":true,"internalType":"address"},{"name":"signatory","type":"address","indexed":true,"internalType":"address"},{"name":"callConfig","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"error","name":"AtlasLockActive","inputs":[]},{"type":"error","name":"DAppNotEnabled","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignatory","inputs":[]},{"type":"error","name":"OnlyGovernance","inputs":[]},{"type":"error","name":"SignatoryActive","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}] \ No newline at end of file diff --git a/contract/atlasverification/1.3/atlasverification.go b/contract/atlasverification/1.3/atlasverification.go new file mode 100644 index 0000000..40993f0 --- /dev/null +++ b/contract/atlasverification/1.3/atlasverification.go @@ -0,0 +1,1765 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package atlasverification_1_3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DAppConfig is an auto generated low-level Go binding around an user-defined struct. +type DAppConfig struct { + To common.Address + CallConfig uint32 + BidToken common.Address + SolverGasLimit uint32 +} + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// AtlasVerificationMetaData contains all meta data concerning the AtlasVerification contract. +var AtlasVerificationMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"atlas\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ATLAS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"changeDAppGovernance\",\"inputs\":[{\"name\":\"oldGovernance\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"dAppSequentialNonceTrackers\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"lastUsedSeqNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"dAppSignatories\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableDApp\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDAppNextNonce\",\"inputs\":[{\"name\":\"dApp\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nextNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDAppOperationPayload\",\"inputs\":[{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"payload\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDomainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"domainSeparator\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGovFromControl\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSolverPayload\",\"inputs\":[{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"payload\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserNextNonSeqNonceAfter\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"refNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserNextNonce\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sequential\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"nextNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserOperationHash\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserOperationPayload\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"payload\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeGovernance\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"signatories\",\"inputs\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userNonSequentialNonceTrackers\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wordIndex\",\"type\":\"uint248\",\"internalType\":\"uint248\"}],\"outputs\":[{\"name\":\"bitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userSequentialNonceTrackers\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"lastUsedSeqNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateCalls\",\"inputs\":[{\"name\":\"dConfig\",\"type\":\"tuple\",\"internalType\":\"structDAppConfig\",\"components\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solverGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isSimulation\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCallConfig\",\"inputs\":[{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifySolverOp\",\"inputs\":[{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"userMaxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowsTrustedOpHash\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DAppDisabled\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DAppGovernanceChanged\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGovernance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RemovedDAppSignatory\",\"inputs\":[{\"name\":\"control\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"governance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"signatory\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AtlasLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DAppNotEnabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatory\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyGovernance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatoryActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", +} + +// AtlasVerificationABI is the input ABI used to generate the binding from. +// Deprecated: Use AtlasVerificationMetaData.ABI instead. +var AtlasVerificationABI = AtlasVerificationMetaData.ABI + +// AtlasVerification is an auto generated Go binding around an Ethereum contract. +type AtlasVerification struct { + AtlasVerificationCaller // Read-only binding to the contract + AtlasVerificationTransactor // Write-only binding to the contract + AtlasVerificationFilterer // Log filterer for contract events +} + +// AtlasVerificationCaller is an auto generated read-only Go binding around an Ethereum contract. +type AtlasVerificationCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AtlasVerificationTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AtlasVerificationFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AtlasVerificationSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AtlasVerificationSession struct { + Contract *AtlasVerification // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasVerificationCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AtlasVerificationCallerSession struct { + Contract *AtlasVerificationCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AtlasVerificationTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AtlasVerificationTransactorSession struct { + Contract *AtlasVerificationTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AtlasVerificationRaw is an auto generated low-level Go binding around an Ethereum contract. +type AtlasVerificationRaw struct { + Contract *AtlasVerification // Generic contract binding to access the raw methods on +} + +// AtlasVerificationCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AtlasVerificationCallerRaw struct { + Contract *AtlasVerificationCaller // Generic read-only contract binding to access the raw methods on +} + +// AtlasVerificationTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AtlasVerificationTransactorRaw struct { + Contract *AtlasVerificationTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAtlasVerification creates a new instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerification(address common.Address, backend bind.ContractBackend) (*AtlasVerification, error) { + contract, err := bindAtlasVerification(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AtlasVerification{AtlasVerificationCaller: AtlasVerificationCaller{contract: contract}, AtlasVerificationTransactor: AtlasVerificationTransactor{contract: contract}, AtlasVerificationFilterer: AtlasVerificationFilterer{contract: contract}}, nil +} + +// NewAtlasVerificationCaller creates a new read-only instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationCaller(address common.Address, caller bind.ContractCaller) (*AtlasVerificationCaller, error) { + contract, err := bindAtlasVerification(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AtlasVerificationCaller{contract: contract}, nil +} + +// NewAtlasVerificationTransactor creates a new write-only instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationTransactor(address common.Address, transactor bind.ContractTransactor) (*AtlasVerificationTransactor, error) { + contract, err := bindAtlasVerification(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AtlasVerificationTransactor{contract: contract}, nil +} + +// NewAtlasVerificationFilterer creates a new log filterer instance of AtlasVerification, bound to a specific deployed contract. +func NewAtlasVerificationFilterer(address common.Address, filterer bind.ContractFilterer) (*AtlasVerificationFilterer, error) { + contract, err := bindAtlasVerification(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AtlasVerificationFilterer{contract: contract}, nil +} + +// bindAtlasVerification binds a generic wrapper to an already deployed contract. +func bindAtlasVerification(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(AtlasVerificationABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AtlasVerification *AtlasVerificationRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AtlasVerification.Contract.AtlasVerificationCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AtlasVerification *AtlasVerificationRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AtlasVerification.Contract.AtlasVerificationTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AtlasVerification *AtlasVerificationRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AtlasVerification.Contract.AtlasVerificationTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AtlasVerification *AtlasVerificationCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AtlasVerification.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AtlasVerification *AtlasVerificationTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AtlasVerification.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AtlasVerification *AtlasVerificationTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AtlasVerification.Contract.contract.Transact(opts, method, params...) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationCaller) ATLAS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "ATLAS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationSession) ATLAS() (common.Address, error) { + return _AtlasVerification.Contract.ATLAS(&_AtlasVerification.CallOpts) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_AtlasVerification *AtlasVerificationCallerSession) ATLAS() (common.Address, error) { + return _AtlasVerification.Contract.ATLAS(&_AtlasVerification.CallOpts) +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCaller) DAppSequentialNonceTrackers(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "dAppSequentialNonceTrackers", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationSession) DAppSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.DAppSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// DAppSequentialNonceTrackers is a free data retrieval call binding the contract method 0xea380b97. +// +// Solidity: function dAppSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) DAppSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.DAppSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationCaller) DAppSignatories(opts *bind.CallOpts, control common.Address) ([]common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "dAppSignatories", control) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationSession) DAppSignatories(control common.Address) ([]common.Address, error) { + return _AtlasVerification.Contract.DAppSignatories(&_AtlasVerification.CallOpts, control) +} + +// DAppSignatories is a free data retrieval call binding the contract method 0x6564524a. +// +// Solidity: function dAppSignatories(address control) view returns(address[]) +func (_AtlasVerification *AtlasVerificationCallerSession) DAppSignatories(control common.Address) ([]common.Address, error) { + return _AtlasVerification.Contract.DAppSignatories(&_AtlasVerification.CallOpts, control) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationCaller) Eip712Domain(opts *bind.CallOpts) (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "eip712Domain") + + outstruct := new(struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Fields = *abi.ConvertType(out[0], new([1]byte)).(*[1]byte) + outstruct.Name = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Version = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.ChainId = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.VerifyingContract = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + outstruct.Salt = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) + outstruct.Extensions = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _AtlasVerification.Contract.Eip712Domain(&_AtlasVerification.CallOpts) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_AtlasVerification *AtlasVerificationCallerSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _AtlasVerification.Contract.Eip712Domain(&_AtlasVerification.CallOpts) +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCaller) GetDAppNextNonce(opts *bind.CallOpts, dApp common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDAppNextNonce", dApp) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationSession) GetDAppNextNonce(dApp common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.GetDAppNextNonce(&_AtlasVerification.CallOpts, dApp) +} + +// GetDAppNextNonce is a free data retrieval call binding the contract method 0x9776f11e. +// +// Solidity: function getDAppNextNonce(address dApp) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDAppNextNonce(dApp common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.GetDAppNextNonce(&_AtlasVerification.CallOpts, dApp) +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetDAppOperationPayload(opts *bind.CallOpts, dAppOp DAppOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDAppOperationPayload", dAppOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetDAppOperationPayload(dAppOp DAppOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetDAppOperationPayload(&_AtlasVerification.CallOpts, dAppOp) +} + +// GetDAppOperationPayload is a free data retrieval call binding the contract method 0x246c8c00. +// +// Solidity: function getDAppOperationPayload((address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDAppOperationPayload(dAppOp DAppOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetDAppOperationPayload(&_AtlasVerification.CallOpts, dAppOp) +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationCaller) GetDomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getDomainSeparator") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationSession) GetDomainSeparator() ([32]byte, error) { + return _AtlasVerification.Contract.GetDomainSeparator(&_AtlasVerification.CallOpts) +} + +// GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d. +// +// Solidity: function getDomainSeparator() view returns(bytes32 domainSeparator) +func (_AtlasVerification *AtlasVerificationCallerSession) GetDomainSeparator() ([32]byte, error) { + return _AtlasVerification.Contract.GetDomainSeparator(&_AtlasVerification.CallOpts) +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationCaller) GetGovFromControl(opts *bind.CallOpts, control common.Address) (common.Address, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getGovFromControl", control) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationSession) GetGovFromControl(control common.Address) (common.Address, error) { + return _AtlasVerification.Contract.GetGovFromControl(&_AtlasVerification.CallOpts, control) +} + +// GetGovFromControl is a free data retrieval call binding the contract method 0xa55660da. +// +// Solidity: function getGovFromControl(address control) view returns(address) +func (_AtlasVerification *AtlasVerificationCallerSession) GetGovFromControl(control common.Address) (common.Address, error) { + return _AtlasVerification.Contract.GetGovFromControl(&_AtlasVerification.CallOpts, control) +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetSolverPayload(opts *bind.CallOpts, solverOp SolverOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getSolverPayload", solverOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetSolverPayload(solverOp SolverOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetSolverPayload(&_AtlasVerification.CallOpts, solverOp) +} + +// GetSolverPayload is a free data retrieval call binding the contract method 0xc5883fc1. +// +// Solidity: function getSolverPayload((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetSolverPayload(solverOp SolverOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetSolverPayload(&_AtlasVerification.CallOpts, solverOp) +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationCaller) GetUserNextNonSeqNonceAfter(opts *bind.CallOpts, user common.Address, refNonce *big.Int) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserNextNonSeqNonceAfter", user, refNonce) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationSession) GetUserNextNonSeqNonceAfter(user common.Address, refNonce *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonSeqNonceAfter(&_AtlasVerification.CallOpts, user, refNonce) +} + +// GetUserNextNonSeqNonceAfter is a free data retrieval call binding the contract method 0x34a99a03. +// +// Solidity: function getUserNextNonSeqNonceAfter(address user, uint256 refNonce) view returns(uint256) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserNextNonSeqNonceAfter(user common.Address, refNonce *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonSeqNonceAfter(&_AtlasVerification.CallOpts, user, refNonce) +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCaller) GetUserNextNonce(opts *bind.CallOpts, user common.Address, sequential bool) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserNextNonce", user, sequential) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationSession) GetUserNextNonce(user common.Address, sequential bool) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonce(&_AtlasVerification.CallOpts, user, sequential) +} + +// GetUserNextNonce is a free data retrieval call binding the contract method 0x0c388878. +// +// Solidity: function getUserNextNonce(address user, bool sequential) view returns(uint256 nextNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserNextNonce(user common.Address, sequential bool) (*big.Int, error) { + return _AtlasVerification.Contract.GetUserNextNonce(&_AtlasVerification.CallOpts, user, sequential) +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationCaller) GetUserOperationHash(opts *bind.CallOpts, userOp UserOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserOperationHash", userOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationSession) GetUserOperationHash(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationHash(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationHash is a free data retrieval call binding the contract method 0x488c4b19. +// +// Solidity: function getUserOperationHash((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 userOpHash) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserOperationHash(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationHash(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCaller) GetUserOperationPayload(opts *bind.CallOpts, userOp UserOperation) ([32]byte, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "getUserOperationPayload", userOp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationSession) GetUserOperationPayload(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationPayload(&_AtlasVerification.CallOpts, userOp) +} + +// GetUserOperationPayload is a free data retrieval call binding the contract method 0x8b28829e. +// +// Solidity: function getUserOperationPayload((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) view returns(bytes32 payload) +func (_AtlasVerification *AtlasVerificationCallerSession) GetUserOperationPayload(userOp UserOperation) ([32]byte, error) { + return _AtlasVerification.Contract.GetUserOperationPayload(&_AtlasVerification.CallOpts, userOp) +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationCaller) IsDAppSignatory(opts *bind.CallOpts, control common.Address, signatory common.Address) (bool, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "isDAppSignatory", control, signatory) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationSession) IsDAppSignatory(control common.Address, signatory common.Address) (bool, error) { + return _AtlasVerification.Contract.IsDAppSignatory(&_AtlasVerification.CallOpts, control, signatory) +} + +// IsDAppSignatory is a free data retrieval call binding the contract method 0x091d7b96. +// +// Solidity: function isDAppSignatory(address control, address signatory) view returns(bool) +func (_AtlasVerification *AtlasVerificationCallerSession) IsDAppSignatory(control common.Address, signatory common.Address) (bool, error) { + return _AtlasVerification.Contract.IsDAppSignatory(&_AtlasVerification.CallOpts, control, signatory) +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationCaller) Signatories(opts *bind.CallOpts, key [32]byte) (bool, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "signatories", key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationSession) Signatories(key [32]byte) (bool, error) { + return _AtlasVerification.Contract.Signatories(&_AtlasVerification.CallOpts, key) +} + +// Signatories is a free data retrieval call binding the contract method 0xbfcf51ec. +// +// Solidity: function signatories(bytes32 key) view returns(bool) +func (_AtlasVerification *AtlasVerificationCallerSession) Signatories(key [32]byte) (bool, error) { + return _AtlasVerification.Contract.Signatories(&_AtlasVerification.CallOpts, key) +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationCaller) UserNonSequentialNonceTrackers(opts *bind.CallOpts, account common.Address, wordIndex *big.Int) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "userNonSequentialNonceTrackers", account, wordIndex) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationSession) UserNonSequentialNonceTrackers(account common.Address, wordIndex *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.UserNonSequentialNonceTrackers(&_AtlasVerification.CallOpts, account, wordIndex) +} + +// UserNonSequentialNonceTrackers is a free data retrieval call binding the contract method 0x8caf11aa. +// +// Solidity: function userNonSequentialNonceTrackers(address account, uint248 wordIndex) view returns(uint256 bitmap) +func (_AtlasVerification *AtlasVerificationCallerSession) UserNonSequentialNonceTrackers(account common.Address, wordIndex *big.Int) (*big.Int, error) { + return _AtlasVerification.Contract.UserNonSequentialNonceTrackers(&_AtlasVerification.CallOpts, account, wordIndex) +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCaller) UserSequentialNonceTrackers(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "userSequentialNonceTrackers", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationSession) UserSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.UserSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// UserSequentialNonceTrackers is a free data retrieval call binding the contract method 0x7d7303d0. +// +// Solidity: function userSequentialNonceTrackers(address account) view returns(uint256 lastUsedSeqNonce) +func (_AtlasVerification *AtlasVerificationCallerSession) UserSequentialNonceTrackers(account common.Address) (*big.Int, error) { + return _AtlasVerification.Contract.UserSequentialNonceTrackers(&_AtlasVerification.CallOpts, account) +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationCaller) VerifyCallConfig(opts *bind.CallOpts, callConfig uint32) (uint8, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "verifyCallConfig", callConfig) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationSession) VerifyCallConfig(callConfig uint32) (uint8, error) { + return _AtlasVerification.Contract.VerifyCallConfig(&_AtlasVerification.CallOpts, callConfig) +} + +// VerifyCallConfig is a free data retrieval call binding the contract method 0xa91de83a. +// +// Solidity: function verifyCallConfig(uint32 callConfig) pure returns(uint8) +func (_AtlasVerification *AtlasVerificationCallerSession) VerifyCallConfig(callConfig uint32) (uint8, error) { + return _AtlasVerification.Contract.VerifyCallConfig(&_AtlasVerification.CallOpts, callConfig) +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationCaller) VerifySolverOp(opts *bind.CallOpts, solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + var out []interface{} + err := _AtlasVerification.contract.Call(opts, &out, "verifySolverOp", solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationSession) VerifySolverOp(solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + return _AtlasVerification.Contract.VerifySolverOp(&_AtlasVerification.CallOpts, solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) +} + +// VerifySolverOp is a free data retrieval call binding the contract method 0x9f7e72b6. +// +// Solidity: function verifySolverOp((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, bytes32 userOpHash, uint256 userMaxFeePerGas, address bundler, bool allowsTrustedOpHash) view returns(uint256 result) +func (_AtlasVerification *AtlasVerificationCallerSession) VerifySolverOp(solverOp SolverOperation, userOpHash [32]byte, userMaxFeePerGas *big.Int, bundler common.Address, allowsTrustedOpHash bool) (*big.Int, error) { + return _AtlasVerification.Contract.VerifySolverOp(&_AtlasVerification.CallOpts, solverOp, userOpHash, userMaxFeePerGas, bundler, allowsTrustedOpHash) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactor) AddSignatory(opts *bind.TransactOpts, control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "addSignatory", control, signatory) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationSession) AddSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.AddSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// AddSignatory is a paid mutator transaction binding the contract method 0x1170a503. +// +// Solidity: function addSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) AddSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.AddSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationTransactor) ChangeDAppGovernance(opts *bind.TransactOpts, oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "changeDAppGovernance", oldGovernance, newGovernance) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationSession) ChangeDAppGovernance(oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.ChangeDAppGovernance(&_AtlasVerification.TransactOpts, oldGovernance, newGovernance) +} + +// ChangeDAppGovernance is a paid mutator transaction binding the contract method 0x1364147e. +// +// Solidity: function changeDAppGovernance(address oldGovernance, address newGovernance) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) ChangeDAppGovernance(oldGovernance common.Address, newGovernance common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.ChangeDAppGovernance(&_AtlasVerification.TransactOpts, oldGovernance, newGovernance) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactor) DisableDApp(opts *bind.TransactOpts, control common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "disableDApp", control) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationSession) DisableDApp(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.DisableDApp(&_AtlasVerification.TransactOpts, control) +} + +// DisableDApp is a paid mutator transaction binding the contract method 0x9bcf79b7. +// +// Solidity: function disableDApp(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) DisableDApp(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.DisableDApp(&_AtlasVerification.TransactOpts, control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactor) InitializeGovernance(opts *bind.TransactOpts, control common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "initializeGovernance", control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationSession) InitializeGovernance(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.InitializeGovernance(&_AtlasVerification.TransactOpts, control) +} + +// InitializeGovernance is a paid mutator transaction binding the contract method 0x55d202a6. +// +// Solidity: function initializeGovernance(address control) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) InitializeGovernance(control common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.InitializeGovernance(&_AtlasVerification.TransactOpts, control) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactor) RemoveSignatory(opts *bind.TransactOpts, control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "removeSignatory", control, signatory) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationSession) RemoveSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.RemoveSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// RemoveSignatory is a paid mutator transaction binding the contract method 0xe2e439ea. +// +// Solidity: function removeSignatory(address control, address signatory) returns() +func (_AtlasVerification *AtlasVerificationTransactorSession) RemoveSignatory(control common.Address, signatory common.Address) (*types.Transaction, error) { + return _AtlasVerification.Contract.RemoveSignatory(&_AtlasVerification.TransactOpts, control, signatory) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationTransactor) ValidateCalls(opts *bind.TransactOpts, dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.contract.Transact(opts, "validateCalls", dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationSession) ValidateCalls(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.Contract.ValidateCalls(&_AtlasVerification.TransactOpts, dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// ValidateCalls is a paid mutator transaction binding the contract method 0xab0a4b96. +// +// Solidity: function validateCalls((address,uint32,address,uint32) dConfig, (address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp, uint256 msgValue, address msgSender, bool isSimulation) returns(uint8) +func (_AtlasVerification *AtlasVerificationTransactorSession) ValidateCalls(dConfig DAppConfig, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation, msgValue *big.Int, msgSender common.Address, isSimulation bool) (*types.Transaction, error) { + return _AtlasVerification.Contract.ValidateCalls(&_AtlasVerification.TransactOpts, dConfig, userOp, solverOps, dAppOp, msgValue, msgSender, isSimulation) +} + +// AtlasVerificationDAppDisabledIterator is returned from FilterDAppDisabled and is used to iterate over the raw logs and unpacked data for DAppDisabled events raised by the AtlasVerification contract. +type AtlasVerificationDAppDisabledIterator struct { + Event *AtlasVerificationDAppDisabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationDAppDisabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppDisabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationDAppDisabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationDAppDisabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationDAppDisabled represents a DAppDisabled event raised by the AtlasVerification contract. +type AtlasVerificationDAppDisabled struct { + Control common.Address + Governance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppDisabled is a free log retrieval operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterDAppDisabled(opts *bind.FilterOpts, control []common.Address, governance []common.Address) (*AtlasVerificationDAppDisabledIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return &AtlasVerificationDAppDisabledIterator{contract: _AtlasVerification.contract, event: "DAppDisabled", logs: logs, sub: sub}, nil +} + +// WatchDAppDisabled is a free log subscription operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchDAppDisabled(opts *bind.WatchOpts, sink chan<- *AtlasVerificationDAppDisabled, control []common.Address, governance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "DAppDisabled", controlRule, governanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationDAppDisabled) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppDisabled is a log parse operation binding the contract event 0xfb402de0284ae6437f381fcd6b8da6639e155a56551b5a8b95d2ab6c4e007d0a. +// +// Solidity: event DAppDisabled(address indexed control, address indexed governance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseDAppDisabled(log types.Log) (*AtlasVerificationDAppDisabled, error) { + event := new(AtlasVerificationDAppDisabled) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppDisabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationDAppGovernanceChangedIterator is returned from FilterDAppGovernanceChanged and is used to iterate over the raw logs and unpacked data for DAppGovernanceChanged events raised by the AtlasVerification contract. +type AtlasVerificationDAppGovernanceChangedIterator struct { + Event *AtlasVerificationDAppGovernanceChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationDAppGovernanceChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationDAppGovernanceChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationDAppGovernanceChanged represents a DAppGovernanceChanged event raised by the AtlasVerification contract. +type AtlasVerificationDAppGovernanceChanged struct { + Control common.Address + OldGovernance common.Address + NewGovernance common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDAppGovernanceChanged is a free log retrieval operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterDAppGovernanceChanged(opts *bind.FilterOpts, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (*AtlasVerificationDAppGovernanceChangedIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return &AtlasVerificationDAppGovernanceChangedIterator{contract: _AtlasVerification.contract, event: "DAppGovernanceChanged", logs: logs, sub: sub}, nil +} + +// WatchDAppGovernanceChanged is a free log subscription operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchDAppGovernanceChanged(opts *bind.WatchOpts, sink chan<- *AtlasVerificationDAppGovernanceChanged, control []common.Address, oldGovernance []common.Address, newGovernance []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var oldGovernanceRule []interface{} + for _, oldGovernanceItem := range oldGovernance { + oldGovernanceRule = append(oldGovernanceRule, oldGovernanceItem) + } + var newGovernanceRule []interface{} + for _, newGovernanceItem := range newGovernance { + newGovernanceRule = append(newGovernanceRule, newGovernanceItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "DAppGovernanceChanged", controlRule, oldGovernanceRule, newGovernanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationDAppGovernanceChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDAppGovernanceChanged is a log parse operation binding the contract event 0xcc02b55b78457369d35dc189a074d3fc4f96a1897b405c0f1c57789f782d8bd2. +// +// Solidity: event DAppGovernanceChanged(address indexed control, address indexed oldGovernance, address indexed newGovernance, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseDAppGovernanceChanged(log types.Log) (*AtlasVerificationDAppGovernanceChanged, error) { + event := new(AtlasVerificationDAppGovernanceChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "DAppGovernanceChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationEIP712DomainChangedIterator is returned from FilterEIP712DomainChanged and is used to iterate over the raw logs and unpacked data for EIP712DomainChanged events raised by the AtlasVerification contract. +type AtlasVerificationEIP712DomainChangedIterator struct { + Event *AtlasVerificationEIP712DomainChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationEIP712DomainChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationEIP712DomainChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationEIP712DomainChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationEIP712DomainChanged represents a EIP712DomainChanged event raised by the AtlasVerification contract. +type AtlasVerificationEIP712DomainChanged struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEIP712DomainChanged is a free log retrieval operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) FilterEIP712DomainChanged(opts *bind.FilterOpts) (*AtlasVerificationEIP712DomainChangedIterator, error) { + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return &AtlasVerificationEIP712DomainChangedIterator{contract: _AtlasVerification.contract, event: "EIP712DomainChanged", logs: logs, sub: sub}, nil +} + +// WatchEIP712DomainChanged is a free log subscription operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) WatchEIP712DomainChanged(opts *bind.WatchOpts, sink chan<- *AtlasVerificationEIP712DomainChanged) (event.Subscription, error) { + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationEIP712DomainChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEIP712DomainChanged is a log parse operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_AtlasVerification *AtlasVerificationFilterer) ParseEIP712DomainChanged(log types.Log) (*AtlasVerificationEIP712DomainChanged, error) { + event := new(AtlasVerificationEIP712DomainChanged) + if err := _AtlasVerification.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationNewDAppSignatoryIterator is returned from FilterNewDAppSignatory and is used to iterate over the raw logs and unpacked data for NewDAppSignatory events raised by the AtlasVerification contract. +type AtlasVerificationNewDAppSignatoryIterator struct { + Event *AtlasVerificationNewDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationNewDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationNewDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationNewDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationNewDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationNewDAppSignatory represents a NewDAppSignatory event raised by the AtlasVerification contract. +type AtlasVerificationNewDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDAppSignatory is a free log retrieval operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterNewDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasVerificationNewDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasVerificationNewDAppSignatoryIterator{contract: _AtlasVerification.contract, event: "NewDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchNewDAppSignatory is a free log subscription operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchNewDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasVerificationNewDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "NewDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationNewDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewDAppSignatory is a log parse operation binding the contract event 0xcacb2beeeba676b69bddabab0d5f66e2733cabc804f82afd92ea5beae71934b4. +// +// Solidity: event NewDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseNewDAppSignatory(log types.Log) (*AtlasVerificationNewDAppSignatory, error) { + event := new(AtlasVerificationNewDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "NewDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AtlasVerificationRemovedDAppSignatoryIterator is returned from FilterRemovedDAppSignatory and is used to iterate over the raw logs and unpacked data for RemovedDAppSignatory events raised by the AtlasVerification contract. +type AtlasVerificationRemovedDAppSignatoryIterator struct { + Event *AtlasVerificationRemovedDAppSignatory // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AtlasVerificationRemovedDAppSignatory) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AtlasVerificationRemovedDAppSignatoryIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AtlasVerificationRemovedDAppSignatory represents a RemovedDAppSignatory event raised by the AtlasVerification contract. +type AtlasVerificationRemovedDAppSignatory struct { + Control common.Address + Governance common.Address + Signatory common.Address + CallConfig uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRemovedDAppSignatory is a free log retrieval operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) FilterRemovedDAppSignatory(opts *bind.FilterOpts, control []common.Address, governance []common.Address, signatory []common.Address) (*AtlasVerificationRemovedDAppSignatoryIterator, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.FilterLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return &AtlasVerificationRemovedDAppSignatoryIterator{contract: _AtlasVerification.contract, event: "RemovedDAppSignatory", logs: logs, sub: sub}, nil +} + +// WatchRemovedDAppSignatory is a free log subscription operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) WatchRemovedDAppSignatory(opts *bind.WatchOpts, sink chan<- *AtlasVerificationRemovedDAppSignatory, control []common.Address, governance []common.Address, signatory []common.Address) (event.Subscription, error) { + + var controlRule []interface{} + for _, controlItem := range control { + controlRule = append(controlRule, controlItem) + } + var governanceRule []interface{} + for _, governanceItem := range governance { + governanceRule = append(governanceRule, governanceItem) + } + var signatoryRule []interface{} + for _, signatoryItem := range signatory { + signatoryRule = append(signatoryRule, signatoryItem) + } + + logs, sub, err := _AtlasVerification.contract.WatchLogs(opts, "RemovedDAppSignatory", controlRule, governanceRule, signatoryRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AtlasVerificationRemovedDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRemovedDAppSignatory is a log parse operation binding the contract event 0x90a400fe7fe676a24908d5f730fe6d38072340bc8f74e18a543132d840bfe5ce. +// +// Solidity: event RemovedDAppSignatory(address indexed control, address indexed governance, address indexed signatory, uint32 callConfig) +func (_AtlasVerification *AtlasVerificationFilterer) ParseRemovedDAppSignatory(log types.Log) (*AtlasVerificationRemovedDAppSignatory, error) { + event := new(AtlasVerificationRemovedDAppSignatory) + if err := _AtlasVerification.contract.UnpackLog(event, "RemovedDAppSignatory", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/simulator/1.3/abi.json b/contract/simulator/1.3/abi.json new file mode 100644 index 0000000..7445962 --- /dev/null +++ b/contract/simulator/1.3/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"atlas","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deployer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metacallSimulation","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setAtlas","inputs":[{"name":"_atlas","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simSolverCall","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOp","type":"tuple","internalType":"struct SolverOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"simResult","type":"uint8","internalType":"enum Result"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"simSolverCalls","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"dAppOp","type":"tuple","internalType":"struct DAppOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"control","type":"address","internalType":"address"},{"name":"bundler","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"callChainHash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"simResult","type":"uint8","internalType":"enum Result"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"simUserOperation","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"simResult","type":"uint8","internalType":"enum Result"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"withdrawETH","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DeployerWithdrawal","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AllocateValueDelegatecallFail","inputs":[]},{"type":"error","name":"AllocateValueFail","inputs":[]},{"type":"error","name":"AllocateValueSimFail","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlteredControl","inputs":[]},{"type":"error","name":"AtlasLockActive","inputs":[]},{"type":"error","name":"BalanceNotReconciled","inputs":[]},{"type":"error","name":"BidFindSuccessful","inputs":[{"name":"bidAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BidNotPaid","inputs":[]},{"type":"error","name":"BothPreOpsAndUserReturnDataCannotBeTracked","inputs":[]},{"type":"error","name":"BothUserAndDAppNoncesCannotBeSequential","inputs":[]},{"type":"error","name":"CallbackNotCalled","inputs":[]},{"type":"error","name":"DAppNotEnabled","inputs":[]},{"type":"error","name":"DoubleReconcile","inputs":[]},{"type":"error","name":"EnvironmentMismatch","inputs":[]},{"type":"error","name":"EscrowLockActive","inputs":[]},{"type":"error","name":"ExecutionEnvironmentBalanceTooLow","inputs":[]},{"type":"error","name":"InsufficientAtlETHBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientBalanceForDeduction","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"requested","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientEscrow","inputs":[]},{"type":"error","name":"InsufficientFunds","inputs":[]},{"type":"error","name":"InsufficientLocalFunds","inputs":[]},{"type":"error","name":"InsufficientSolverBalance","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"holds","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTotalBalance","inputs":[{"name":"shortfall","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidAccess","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"InvalidCodeHash","inputs":[]},{"type":"error","name":"InvalidControl","inputs":[]},{"type":"error","name":"InvalidDAppControl","inputs":[]},{"type":"error","name":"InvalidEntry","inputs":[]},{"type":"error","name":"InvalidEntryFunction","inputs":[]},{"type":"error","name":"InvalidEnvironment","inputs":[]},{"type":"error","name":"InvalidEscrowDuration","inputs":[]},{"type":"error","name":"InvalidExecutionEnvironment","inputs":[{"name":"correctEnvironment","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidLockState","inputs":[]},{"type":"error","name":"InvalidSignatory","inputs":[]},{"type":"error","name":"InvalidSolver","inputs":[]},{"type":"error","name":"InvalidSolverFrom","inputs":[{"name":"solverFrom","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTo","inputs":[]},{"type":"error","name":"InvalidUser","inputs":[]},{"type":"error","name":"InvertBidValueCannotBeExPostBids","inputs":[]},{"type":"error","name":"InvertedBidExceedsCeiling","inputs":[]},{"type":"error","name":"LedgerBalancing","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"LedgerFinalized","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MissingFunds","inputs":[{"name":"id","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"MustBeDelegatecalled","inputs":[]},{"type":"error","name":"NoAuctionWinner","inputs":[]},{"type":"error","name":"NoDelegatecall","inputs":[]},{"type":"error","name":"NoUnfilledRequests","inputs":[]},{"type":"error","name":"NoUnusedNonceInBitmap","inputs":[]},{"type":"error","name":"NotEnvironmentOwner","inputs":[]},{"type":"error","name":"NotImplemented","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"OnlyAtlas","inputs":[]},{"type":"error","name":"OnlyGovernance","inputs":[]},{"type":"error","name":"PostOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PostOpsDelegatecallReturnedFalse","inputs":[]},{"type":"error","name":"PostOpsFail","inputs":[]},{"type":"error","name":"PostOpsSimFail","inputs":[]},{"type":"error","name":"PostSolverFailed","inputs":[]},{"type":"error","name":"PreOpsDelegatecallFail","inputs":[]},{"type":"error","name":"PreOpsFail","inputs":[]},{"type":"error","name":"PreOpsSimFail","inputs":[]},{"type":"error","name":"PreSolverFailed","inputs":[]},{"type":"error","name":"SignatoryActive","inputs":[]},{"type":"error","name":"SimulationPassed","inputs":[]},{"type":"error","name":"SimulatorBalanceTooLow","inputs":[]},{"type":"error","name":"SolverMustReconcile","inputs":[]},{"type":"error","name":"SolverOpReverted","inputs":[]},{"type":"error","name":"SolverSimFail","inputs":[{"name":"solverOutcomeResult","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SurchargeRateTooHigh","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnbalancedAccounting","inputs":[]},{"type":"error","name":"UncoveredResult","inputs":[]},{"type":"error","name":"UnexpectedNonRevert","inputs":[]},{"type":"error","name":"Unreachable","inputs":[]},{"type":"error","name":"UserNotFulfilled","inputs":[]},{"type":"error","name":"UserOpFail","inputs":[]},{"type":"error","name":"UserOpSimFail","inputs":[]},{"type":"error","name":"UserOpValueExceedsBalance","inputs":[]},{"type":"error","name":"UserSimulationFailed","inputs":[]},{"type":"error","name":"UserSimulationSucceeded","inputs":[]},{"type":"error","name":"UserUnexpectedSuccess","inputs":[]},{"type":"error","name":"UserWrapperCallFail","inputs":[]},{"type":"error","name":"UserWrapperDelegatecallFail","inputs":[]},{"type":"error","name":"ValidCalls","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"VerificationSimFail","inputs":[{"name":"","type":"uint8","internalType":"enum ValidCallsResult"}]},{"type":"error","name":"WrongDepth","inputs":[]},{"type":"error","name":"WrongPhase","inputs":[]}] \ No newline at end of file diff --git a/contract/simulator/1.3/simulator.go b/contract/simulator/1.3/simulator.go new file mode 100644 index 0000000..618ec4b --- /dev/null +++ b/contract/simulator/1.3/simulator.go @@ -0,0 +1,602 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package simulator_1_3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DAppOperation is an auto generated low-level Go binding around an user-defined struct. +type DAppOperation struct { + From common.Address + To common.Address + Nonce *big.Int + Deadline *big.Int + Control common.Address + Bundler common.Address + UserOpHash [32]byte + CallChainHash [32]byte + Signature []byte +} + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// SimulatorMetaData contains all meta data concerning the Simulator contract. +var SimulatorMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"atlas\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deployer\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"metacallSimulation\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setAtlas\",\"inputs\":[{\"name\":\"_atlas\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"simSolverCall\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOp\",\"type\":\"tuple\",\"internalType\":\"structSolverOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"simResult\",\"type\":\"uint8\",\"internalType\":\"enumResult\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"simSolverCalls\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"dAppOp\",\"type\":\"tuple\",\"internalType\":\"structDAppOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bundler\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callChainHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"simResult\",\"type\":\"uint8\",\"internalType\":\"enumResult\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"simUserOperation\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"simResult\",\"type\":\"uint8\",\"internalType\":\"enumResult\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawETH\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DeployerWithdrawal\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AllocateValueDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AllocateValueSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlteredControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AtlasLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BalanceNotReconciled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidFindSuccessful\",\"inputs\":[{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BidNotPaid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothPreOpsAndUserReturnDataCannotBeTracked\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BothUserAndDAppNoncesCannotBeSequential\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallbackNotCalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DAppNotEnabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DoubleReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnvironmentMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EscrowLockActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionEnvironmentBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAtlETHBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientBalanceForDeduction\",\"inputs\":[{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requested\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientEscrow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientLocalFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientSolverBalance\",\"inputs\":[{\"name\":\"actual\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"holds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InsufficientTotalBalance\",\"inputs\":[{\"name\":\"shortfall\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidAccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCodeHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDAppControl\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntry\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEntryFunction\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEnvironment\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEscrowDuration\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidExecutionEnvironment\",\"inputs\":[{\"name\":\"correctEnvironment\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidLockState\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignatory\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolver\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSolverFrom\",\"inputs\":[{\"name\":\"solverFrom\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidTo\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidUser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertBidValueCannotBeExPostBids\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvertedBidExceedsCeiling\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LedgerBalancing\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"LedgerFinalized\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MissingFunds\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"MustBeDelegatecalled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoAuctionWinner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoDelegatecall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnfilledRequests\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoUnusedNonceInBitmap\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEnvironmentOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotImplemented\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAtlas\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyGovernance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsDelegatecallReturnedFalse\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreOpsSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreSolverFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatoryActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulationPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SimulatorBalanceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverMustReconcile\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverOpReverted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SolverSimFail\",\"inputs\":[{\"name\":\"solverOutcomeResult\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SurchargeRateTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnbalancedAccounting\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UncoveredResult\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnexpectedNonRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unreachable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserNotFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpSimFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserOpValueExceedsBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserSimulationSucceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserUnexpectedSuccess\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperCallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserWrapperDelegatecallFail\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidCalls\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"VerificationSimFail\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumValidCallsResult\"}]},{\"type\":\"error\",\"name\":\"WrongDepth\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongPhase\",\"inputs\":[]}]", +} + +// SimulatorABI is the input ABI used to generate the binding from. +// Deprecated: Use SimulatorMetaData.ABI instead. +var SimulatorABI = SimulatorMetaData.ABI + +// Simulator is an auto generated Go binding around an Ethereum contract. +type Simulator struct { + SimulatorCaller // Read-only binding to the contract + SimulatorTransactor // Write-only binding to the contract + SimulatorFilterer // Log filterer for contract events +} + +// SimulatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type SimulatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SimulatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SimulatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SimulatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SimulatorSession struct { + Contract *Simulator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SimulatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SimulatorCallerSession struct { + Contract *SimulatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SimulatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SimulatorTransactorSession struct { + Contract *SimulatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SimulatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type SimulatorRaw struct { + Contract *Simulator // Generic contract binding to access the raw methods on +} + +// SimulatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SimulatorCallerRaw struct { + Contract *SimulatorCaller // Generic read-only contract binding to access the raw methods on +} + +// SimulatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SimulatorTransactorRaw struct { + Contract *SimulatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSimulator creates a new instance of Simulator, bound to a specific deployed contract. +func NewSimulator(address common.Address, backend bind.ContractBackend) (*Simulator, error) { + contract, err := bindSimulator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Simulator{SimulatorCaller: SimulatorCaller{contract: contract}, SimulatorTransactor: SimulatorTransactor{contract: contract}, SimulatorFilterer: SimulatorFilterer{contract: contract}}, nil +} + +// NewSimulatorCaller creates a new read-only instance of Simulator, bound to a specific deployed contract. +func NewSimulatorCaller(address common.Address, caller bind.ContractCaller) (*SimulatorCaller, error) { + contract, err := bindSimulator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SimulatorCaller{contract: contract}, nil +} + +// NewSimulatorTransactor creates a new write-only instance of Simulator, bound to a specific deployed contract. +func NewSimulatorTransactor(address common.Address, transactor bind.ContractTransactor) (*SimulatorTransactor, error) { + contract, err := bindSimulator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SimulatorTransactor{contract: contract}, nil +} + +// NewSimulatorFilterer creates a new log filterer instance of Simulator, bound to a specific deployed contract. +func NewSimulatorFilterer(address common.Address, filterer bind.ContractFilterer) (*SimulatorFilterer, error) { + contract, err := bindSimulator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SimulatorFilterer{contract: contract}, nil +} + +// bindSimulator binds a generic wrapper to an already deployed contract. +func bindSimulator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SimulatorABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Simulator *SimulatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Simulator.Contract.SimulatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Simulator *SimulatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.Contract.SimulatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Simulator *SimulatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Simulator.Contract.SimulatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Simulator *SimulatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Simulator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Simulator *SimulatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Simulator *SimulatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Simulator.Contract.contract.Transact(opts, method, params...) +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorCaller) Atlas(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Simulator.contract.Call(opts, &out, "atlas") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorSession) Atlas() (common.Address, error) { + return _Simulator.Contract.Atlas(&_Simulator.CallOpts) +} + +// Atlas is a free data retrieval call binding the contract method 0x127f1b7d. +// +// Solidity: function atlas() view returns(address) +func (_Simulator *SimulatorCallerSession) Atlas() (common.Address, error) { + return _Simulator.Contract.Atlas(&_Simulator.CallOpts) +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorCaller) Deployer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Simulator.contract.Call(opts, &out, "deployer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorSession) Deployer() (common.Address, error) { + return _Simulator.Contract.Deployer(&_Simulator.CallOpts) +} + +// Deployer is a free data retrieval call binding the contract method 0xd5f39488. +// +// Solidity: function deployer() view returns(address) +func (_Simulator *SimulatorCallerSession) Deployer() (common.Address, error) { + return _Simulator.Contract.Deployer(&_Simulator.CallOpts) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorTransactor) MetacallSimulation(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "metacallSimulation", userOp, solverOps, dAppOp) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorSession) MetacallSimulation(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.MetacallSimulation(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// MetacallSimulation is a paid mutator transaction binding the contract method 0x776c302a. +// +// Solidity: function metacallSimulation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns() +func (_Simulator *SimulatorTransactorSession) MetacallSimulation(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.MetacallSimulation(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorTransactor) SetAtlas(opts *bind.TransactOpts, _atlas common.Address) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "setAtlas", _atlas) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorSession) SetAtlas(_atlas common.Address) (*types.Transaction, error) { + return _Simulator.Contract.SetAtlas(&_Simulator.TransactOpts, _atlas) +} + +// SetAtlas is a paid mutator transaction binding the contract method 0x133bff36. +// +// Solidity: function setAtlas(address _atlas) returns() +func (_Simulator *SimulatorTransactorSession) SetAtlas(_atlas common.Address) (*types.Transaction, error) { + return _Simulator.Contract.SetAtlas(&_Simulator.TransactOpts, _atlas) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimSolverCall(opts *bind.TransactOpts, userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simSolverCall", userOp, solverOp, dAppOp) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimSolverCall(userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCall(&_Simulator.TransactOpts, userOp, solverOp, dAppOp) +} + +// SimSolverCall is a paid mutator transaction binding the contract method 0xc40ff638. +// +// Solidity: function simSolverCall((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes) solverOp, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimSolverCall(userOp UserOperation, solverOp SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCall(&_Simulator.TransactOpts, userOp, solverOp, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimSolverCalls(opts *bind.TransactOpts, userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simSolverCalls", userOp, solverOps, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimSolverCalls(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCalls(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SimSolverCalls is a paid mutator transaction binding the contract method 0x041faf77. +// +// Solidity: function simSolverCalls((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps, (address,address,uint256,uint256,address,address,bytes32,bytes32,bytes) dAppOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimSolverCalls(userOp UserOperation, solverOps []SolverOperation, dAppOp DAppOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimSolverCalls(&_Simulator.TransactOpts, userOp, solverOps, dAppOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactor) SimUserOperation(opts *bind.TransactOpts, userOp UserOperation) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "simUserOperation", userOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorSession) SimUserOperation(userOp UserOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimUserOperation(&_Simulator.TransactOpts, userOp) +} + +// SimUserOperation is a paid mutator transaction binding the contract method 0x6731c9c5. +// +// Solidity: function simUserOperation((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp) payable returns(bool success, uint8 simResult, uint256) +func (_Simulator *SimulatorTransactorSession) SimUserOperation(userOp UserOperation) (*types.Transaction, error) { + return _Simulator.Contract.SimUserOperation(&_Simulator.TransactOpts, userOp) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorTransactor) WithdrawETH(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _Simulator.contract.Transact(opts, "withdrawETH", to) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorSession) WithdrawETH(to common.Address) (*types.Transaction, error) { + return _Simulator.Contract.WithdrawETH(&_Simulator.TransactOpts, to) +} + +// WithdrawETH is a paid mutator transaction binding the contract method 0x690d8320. +// +// Solidity: function withdrawETH(address to) returns() +func (_Simulator *SimulatorTransactorSession) WithdrawETH(to common.Address) (*types.Transaction, error) { + return _Simulator.Contract.WithdrawETH(&_Simulator.TransactOpts, to) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Simulator.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Simulator.Contract.Fallback(&_Simulator.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Simulator *SimulatorTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Simulator.Contract.Fallback(&_Simulator.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Simulator.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorSession) Receive() (*types.Transaction, error) { + return _Simulator.Contract.Receive(&_Simulator.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Simulator *SimulatorTransactorSession) Receive() (*types.Transaction, error) { + return _Simulator.Contract.Receive(&_Simulator.TransactOpts) +} + +// SimulatorDeployerWithdrawalIterator is returned from FilterDeployerWithdrawal and is used to iterate over the raw logs and unpacked data for DeployerWithdrawal events raised by the Simulator contract. +type SimulatorDeployerWithdrawalIterator struct { + Event *SimulatorDeployerWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SimulatorDeployerWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SimulatorDeployerWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SimulatorDeployerWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SimulatorDeployerWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SimulatorDeployerWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SimulatorDeployerWithdrawal represents a DeployerWithdrawal event raised by the Simulator contract. +type SimulatorDeployerWithdrawal struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeployerWithdrawal is a free log retrieval operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) FilterDeployerWithdrawal(opts *bind.FilterOpts, to []common.Address) (*SimulatorDeployerWithdrawalIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Simulator.contract.FilterLogs(opts, "DeployerWithdrawal", toRule) + if err != nil { + return nil, err + } + return &SimulatorDeployerWithdrawalIterator{contract: _Simulator.contract, event: "DeployerWithdrawal", logs: logs, sub: sub}, nil +} + +// WatchDeployerWithdrawal is a free log subscription operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) WatchDeployerWithdrawal(opts *bind.WatchOpts, sink chan<- *SimulatorDeployerWithdrawal, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _Simulator.contract.WatchLogs(opts, "DeployerWithdrawal", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SimulatorDeployerWithdrawal) + if err := _Simulator.contract.UnpackLog(event, "DeployerWithdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeployerWithdrawal is a log parse operation binding the contract event 0x79937dd50eabc51ec0ce6597abf279889ffbe60563a346e7d16826a5e9954b3f. +// +// Solidity: event DeployerWithdrawal(address indexed to, uint256 amount) +func (_Simulator *SimulatorFilterer) ParseDeployerWithdrawal(log types.Log) (*SimulatorDeployerWithdrawal, error) { + event := new(SimulatorDeployerWithdrawal) + if err := _Simulator.contract.UnpackLog(event, "DeployerWithdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contract/sorter/1.3/abi.json b/contract/sorter/1.3/abi.json new file mode 100644 index 0000000..7c5d363 --- /dev/null +++ b/contract/sorter/1.3/abi.json @@ -0,0 +1 @@ +[{"type":"constructor","inputs":[{"name":"_atlas","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"ATLAS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAtlas"}],"stateMutability":"view"},{"type":"function","name":"VERIFICATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAtlasVerification"}],"stateMutability":"view"},{"type":"function","name":"sortBids","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"dapp","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"callConfig","type":"uint32","internalType":"uint32"},{"name":"sessionKey","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"solverOps","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct SolverOperation[]","components":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"solver","type":"address","internalType":"address"},{"name":"control","type":"address","internalType":"address"},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"bidToken","type":"address","internalType":"address"},{"name":"bidAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"}] \ No newline at end of file diff --git a/contract/sorter/1.3/sorter.go b/contract/sorter/1.3/sorter.go new file mode 100644 index 0000000..be71288 --- /dev/null +++ b/contract/sorter/1.3/sorter.go @@ -0,0 +1,307 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package sorter_1_3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// SolverOperation is an auto generated low-level Go binding around an user-defined struct. +type SolverOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Deadline *big.Int + Solver common.Address + Control common.Address + UserOpHash [32]byte + BidToken common.Address + BidAmount *big.Int + Data []byte + Signature []byte +} + +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + From common.Address + To common.Address + Value *big.Int + Gas *big.Int + MaxFeePerGas *big.Int + Nonce *big.Int + Deadline *big.Int + Dapp common.Address + Control common.Address + CallConfig uint32 + SessionKey common.Address + Data []byte + Signature []byte +} + +// SorterMetaData contains all meta data concerning the Sorter contract. +var SorterMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_atlas\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ATLAS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAtlas\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERIFICATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAtlasVerification\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sortBids\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structUserOperation\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"dapp\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callConfig\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"sessionKey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"solverOps\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structSolverOperation[]\",\"components\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxFeePerGas\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"solver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"control\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"userOpHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bidToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"bidAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"}]", +} + +// SorterABI is the input ABI used to generate the binding from. +// Deprecated: Use SorterMetaData.ABI instead. +var SorterABI = SorterMetaData.ABI + +// Sorter is an auto generated Go binding around an Ethereum contract. +type Sorter struct { + SorterCaller // Read-only binding to the contract + SorterTransactor // Write-only binding to the contract + SorterFilterer // Log filterer for contract events +} + +// SorterCaller is an auto generated read-only Go binding around an Ethereum contract. +type SorterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SorterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SorterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SorterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SorterSession struct { + Contract *Sorter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SorterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SorterCallerSession struct { + Contract *SorterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SorterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SorterTransactorSession struct { + Contract *SorterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SorterRaw is an auto generated low-level Go binding around an Ethereum contract. +type SorterRaw struct { + Contract *Sorter // Generic contract binding to access the raw methods on +} + +// SorterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SorterCallerRaw struct { + Contract *SorterCaller // Generic read-only contract binding to access the raw methods on +} + +// SorterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SorterTransactorRaw struct { + Contract *SorterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSorter creates a new instance of Sorter, bound to a specific deployed contract. +func NewSorter(address common.Address, backend bind.ContractBackend) (*Sorter, error) { + contract, err := bindSorter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Sorter{SorterCaller: SorterCaller{contract: contract}, SorterTransactor: SorterTransactor{contract: contract}, SorterFilterer: SorterFilterer{contract: contract}}, nil +} + +// NewSorterCaller creates a new read-only instance of Sorter, bound to a specific deployed contract. +func NewSorterCaller(address common.Address, caller bind.ContractCaller) (*SorterCaller, error) { + contract, err := bindSorter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SorterCaller{contract: contract}, nil +} + +// NewSorterTransactor creates a new write-only instance of Sorter, bound to a specific deployed contract. +func NewSorterTransactor(address common.Address, transactor bind.ContractTransactor) (*SorterTransactor, error) { + contract, err := bindSorter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SorterTransactor{contract: contract}, nil +} + +// NewSorterFilterer creates a new log filterer instance of Sorter, bound to a specific deployed contract. +func NewSorterFilterer(address common.Address, filterer bind.ContractFilterer) (*SorterFilterer, error) { + contract, err := bindSorter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SorterFilterer{contract: contract}, nil +} + +// bindSorter binds a generic wrapper to an already deployed contract. +func bindSorter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SorterABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sorter *SorterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sorter.Contract.SorterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sorter *SorterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sorter.Contract.SorterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sorter *SorterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sorter.Contract.SorterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Sorter *SorterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Sorter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Sorter *SorterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Sorter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Sorter *SorterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Sorter.Contract.contract.Transact(opts, method, params...) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterCaller) ATLAS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "ATLAS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterSession) ATLAS() (common.Address, error) { + return _Sorter.Contract.ATLAS(&_Sorter.CallOpts) +} + +// ATLAS is a free data retrieval call binding the contract method 0xe982ae92. +// +// Solidity: function ATLAS() view returns(address) +func (_Sorter *SorterCallerSession) ATLAS() (common.Address, error) { + return _Sorter.Contract.ATLAS(&_Sorter.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterCaller) VERIFICATION(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "VERIFICATION") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterSession) VERIFICATION() (common.Address, error) { + return _Sorter.Contract.VERIFICATION(&_Sorter.CallOpts) +} + +// VERIFICATION is a free data retrieval call binding the contract method 0x791ae748. +// +// Solidity: function VERIFICATION() view returns(address) +func (_Sorter *SorterCallerSession) VERIFICATION() (common.Address, error) { + return _Sorter.Contract.VERIFICATION(&_Sorter.CallOpts) +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterCaller) SortBids(opts *bind.CallOpts, userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + var out []interface{} + err := _Sorter.contract.Call(opts, &out, "sortBids", userOp, solverOps) + + if err != nil { + return *new([]SolverOperation), err + } + + out0 := *abi.ConvertType(out[0], new([]SolverOperation)).(*[]SolverOperation) + + return out0, err + +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterSession) SortBids(userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + return _Sorter.Contract.SortBids(&_Sorter.CallOpts, userOp, solverOps) +} + +// SortBids is a free data retrieval call binding the contract method 0x3caf7efa. +// +// Solidity: function sortBids((address,address,uint256,uint256,uint256,uint256,uint256,address,address,uint32,address,bytes,bytes) userOp, (address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[] solverOps) view returns((address,address,uint256,uint256,uint256,uint256,address,address,bytes32,address,uint256,bytes,bytes)[]) +func (_Sorter *SorterCallerSession) SortBids(userOp UserOperation, solverOps []SolverOperation) ([]SolverOperation, error) { + return _Sorter.Contract.SortBids(&_Sorter.CallOpts, userOp, solverOps) +} diff --git a/core/atlas.go b/core/atlas.go index 0082656..a443f99 100644 --- a/core/atlas.go +++ b/core/atlas.go @@ -47,7 +47,7 @@ func (sdk *AtlasSdk) Metacall(chainId uint64, version *string, transactOpts *bin case config.AtlasV_1_0, config.AtlasV_1_1: params = append(params, userOp, _solverOps, dAppOp) - case config.AtlasV_1_2: + default: var _gasRefundBeneficiary common.Address if gasRefundBeneficiary != nil { _gasRefundBeneficiary = *gasRefundBeneficiary