From 8ccb524c5ba70feda45f9a03726055b9ec65f884 Mon Sep 17 00:00:00 2001 From: Robert Raynor <35671663+mooselumph@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:50:53 -0800 Subject: [PATCH] Update deployment code for M2 mainnet contracts (#193) --- contracts/bindings/BLSApkRegistry/binding.go | 1345 +++++ contracts/bindings/BN254/binding.go | 2 +- contracts/bindings/BitmapUtils/binding.go | 2 +- .../bindings/DelegationManager/binding.go | 4574 +++++++++++++++++ .../bindings/EigenDAServiceManager/binding.go | 676 ++- .../IEigenDAServiceManager/binding.go | 549 +- contracts/bindings/IndexRegistry/binding.go | 189 +- contracts/bindings/MockRollup/binding.go | 14 +- .../OperatorStateRetriever/binding.go | 311 ++ .../bindings/RegistryCoordinator/binding.go | 3261 ++++++++++++ contracts/bindings/StakeRegistry/binding.go | 1004 ++-- contracts/compile.sh | 2 +- contracts/script/EigenDADeployer.s.sol | 1 + contracts/script/SetUpEigenDA.s.sol | 10 +- inabox/Makefile | 5 + inabox/deploy/config_types.go | 21 +- inabox/deploy/deploy.go | 3 +- inabox/deploy/subgraph.go | 37 +- inabox/tests/integration_test.go | 4 +- 19 files changed, 10528 insertions(+), 1482 deletions(-) create mode 100644 contracts/bindings/BLSApkRegistry/binding.go create mode 100644 contracts/bindings/DelegationManager/binding.go create mode 100644 contracts/bindings/OperatorStateRetriever/binding.go create mode 100644 contracts/bindings/RegistryCoordinator/binding.go diff --git a/contracts/bindings/BLSApkRegistry/binding.go b/contracts/bindings/BLSApkRegistry/binding.go new file mode 100644 index 000000000..fedb25fb1 --- /dev/null +++ b/contracts/bindings/BLSApkRegistry/binding.go @@ -0,0 +1,1345 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractBLSApkRegistry + +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 + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// IBLSApkRegistryApkUpdate is an auto generated low-level Go binding around an user-defined struct. +type IBLSApkRegistryApkUpdate struct { + ApkHash [24]byte + UpdateBlockNumber uint32 + NextUpdateBlockNumber uint32 +} + +// IBLSApkRegistryPubkeyRegistrationParams is an auto generated low-level Go binding around an user-defined struct. +type IBLSApkRegistryPubkeyRegistrationParams struct { + PubkeyRegistrationSignature BN254G1Point + PubkeyG1 BN254G1Point + PubkeyG2 BN254G2Point +} + +// ContractBLSApkRegistryMetaData contains all meta data concerning the ContractBLSApkRegistry contract. +var ContractBLSApkRegistryMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"apkHistory\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"apkHash\",\"type\":\"bytes24\",\"internalType\":\"bytes24\"},{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentApk\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getApk\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApkHashAtBlockNumberAndIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes24\",\"internalType\":\"bytes24\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApkHistoryLength\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApkIndicesAtBlockNumber\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApkUpdateAtIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSApkRegistry.ApkUpdate\",\"components\":[{\"name\":\"apkHash\",\"type\":\"bytes24\",\"internalType\":\"bytes24\"},{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorFromPubkeyHash\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorId\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredPubkey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorToPubkey\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorToPubkeyHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pubkeyHashToOperator\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerBLSPublicKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSApkRegistry.PubkeyRegistrationParams\",\"components\":[{\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}]},{\"name\":\"pubkeyRegistrationMessageHash\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewPubkeyRegistration\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToQuorums\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromQuorums\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", + Bin: "0x60a06040523480156200001157600080fd5b506040516200213738038062002137833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611fb7620001806000396000818161030f01528181610466015281816105bf015281816109a501526110420152611fb76000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611905565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611905565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611938565b61045b565b005b6101ca6101b5366004611938565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c3565b6105b4565b61021b610200366004611a69565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611938565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a82565b6102a261029d366004611a99565b610652565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac3565b6106e5565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a99565b610880565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611905565b6108cb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611938565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0b565b610998565b6103f26103ed366004611b68565b610dec565b6040516101529190611be0565b61018461040d366004611905565b60016020526000908152604090205481565b61021b61042d366004611a69565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c3565b611037565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c2a565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c2a565b6000610607836108cb565b50905061061482826110d0565b7f5358c5b42179178c8fc757734ac2a3198f9071c765ee0d8389211525f50052468383604051610645929190611c9e565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061068f5761068f611d03565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061070c5761070c611d03565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107d35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806107f95750806040015163ffffffff168463ffffffff16105b6108775760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b6004602052816000526040600020818154811061089c57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061098e5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e25760405162461bcd60e51b81526004016104a390611c2a565b6000610a106109f936869003860160408701611d19565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610a98576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f6283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b225760405162461bcd60e51b81526020600482015260476024820152600080516020611f6283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610ba65760405162461bcd60e51b81526020600482015260426024820152600080516020611f6283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610bff918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d4b565b6040516020818303038152906040528051906020012060001c610c229190611d96565b9050610cbc610c5b610c4683610c40368a90038a0160408b01611d19565b9061131b565b610c5536899003890189611d19565b906113b2565b610c63611446565b610ca5610c9685610c40604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c55368a90038a018a611d19565b610cb7368a90038a0160808b01611e08565b611506565b610d575760405162461bcd60e51b815260206004820152606c6024820152600080516020611f6283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610ddb9160808a0190611e65565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e0957610e09611953565b604051908082528060200260200182016040528015610e32578160200160208202803683370190505b50905060005b8481101561102e576000868683818110610e5457610e54611d03565b919091013560f81c600081815260046020526040902054909250905063ffffffff81161580610ebd575060ff821660009081526004602052604081208054909190610ea157610ea1611d03565b600091825260209091200154600160c01b900463ffffffff1686105b15610f4a5760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b60005b8163ffffffff168163ffffffff1610156110185760ff8316600090815260046020526040902087906001610f818486611eaf565b610f8b9190611eaf565b63ffffffff1681548110610fa157610fa1611d03565b600091825260209091200154600160c01b900463ffffffff1611611006576001610fcb8284611eaf565b610fd59190611eaf565b858581518110610fe757610fe7611d03565b602002602001019063ffffffff16908163ffffffff1681525050611018565b8061101081611ed4565b915050610f4d565b505050808061102690611ef8565b915050610e38565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461107f5760405162461bcd60e51b81526004016104a390611c2a565b600061108a836108cb565b50905061109f8261109a83611773565b6110d0565b7f14a5172b312e9d2c22b8468f9c70ec2caa9de934fe380734fbc6f3beff2b14ba8383604051610645929190611c9e565b604080518082019091526000808252602082015260005b835181101561131557600084828151811061110457611104611d03565b0160209081015160f81c60008181526004909252604090912054909150806111945760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c890866113b2565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112119085611f13565b8154811061122157611221611d03565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112625780546001600160c01b031916604083901c1781556112fe565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130d90611ef8565b9150506110e7565b50505050565b6040805180820190915260008082526020820152611337611832565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561136a5761136c565bfe5b50806113aa5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113ce611850565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561136a5750806113aa5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144e61186e565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611535611893565b60005b60028110156116fa57600061154e826006611f2a565b905084826002811061156257611562611d03565b60200201515183611574836000611f49565b600c811061158457611584611d03565b602002015284826002811061159b5761159b611d03565b602002015160200151838260016115b29190611f49565b600c81106115c2576115c2611d03565b60200201528382600281106115d9576115d9611d03565b60200201515151836115ec836002611f49565b600c81106115fc576115fc611d03565b602002015283826002811061161357611613611d03565b602002015151600160200201518361162c836003611f49565b600c811061163c5761163c611d03565b602002015283826002811061165357611653611d03565b60200201516020015160006002811061166e5761166e611d03565b60200201518361167f836004611f49565b600c811061168f5761168f611d03565b60200201528382600281106116a6576116a6611d03565b6020020151602001516001600281106116c1576116c1611d03565b6020020151836116d2836005611f49565b600c81106116e2576116e2611d03565b602002015250806116f281611ef8565b915050611538565b506117036118b2565b60006020826101808560086107d05a03fa905080801561136a5750806117635760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179857506020820151155b156117b6575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fb9190611d96565b611825907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611f13565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118816118d0565b815260200161188e6118d0565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182d57600080fd5b60006020828403121561191757600080fd5b611920826118ee565b9392505050565b803560ff8116811461182d57600080fd5b60006020828403121561194a57600080fd5b61192082611927565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198c5761198c611953565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119bb576119bb611953565b604052919050565b600080604083850312156119d657600080fd5b6119df836118ee565b915060208084013567ffffffffffffffff808211156119fd57600080fd5b818601915086601f830112611a1157600080fd5b813581811115611a2357611a23611953565b611a35601f8201601f19168501611992565b91508082528784828501011115611a4b57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8151815260208083015190820152604081016106df565b60008060408385031215611aac57600080fd5b611ab583611927565b946020939093013593505050565b600080600060608486031215611ad857600080fd5b611ae184611927565b9250602084013563ffffffff81168114611afa57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2257600080fd5b611b2b856118ee565b9350610100601f1982011215611b4057600080fd5b602085019250604061011f1982011215611b5957600080fd5b50610120840190509250925092565b600080600060408486031215611b7d57600080fd5b833567ffffffffffffffff80821115611b9557600080fd5b818601915086601f830112611ba957600080fd5b813581811115611bb857600080fd5b876020828501011115611bca57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1e57835163ffffffff1683529284019291840191600101611bfc565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038316815260006020604081840152835180604085015260005b81811015611cda57858101830151858201606001528201611cbe565b81811115611cec576000606083870101525b50601f01601f191692909201606001949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d2b57600080fd5b611d33611969565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db357634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dc957600080fd5b611dd1611969565b806040840185811115611de357600080fd5b845b81811015611dfd578035845260209384019301611de5565b509095945050505050565b600060808284031215611e1a57600080fd5b6040516040810181811067ffffffffffffffff82111715611e3d57611e3d611953565b604052611e4a8484611db8565b8152611e598460408501611db8565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff83811690831681811015611ecc57611ecc611e99565b039392505050565b600063ffffffff80831681811415611eee57611eee611e99565b6001019392505050565b6000600019821415611f0c57611f0c611e99565b5060010190565b600082821015611f2557611f25611e99565b500390565b6000816000190483118215151615611f4457611f44611e99565b500290565b60008219821115611f5c57611f5c611e99565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122002517c89593dad4aeb26e77bee4fe667e26f04408fe2fb34d3e514be8a2ac52064736f6c634300080c0033", +} + +// ContractBLSApkRegistryABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractBLSApkRegistryMetaData.ABI instead. +var ContractBLSApkRegistryABI = ContractBLSApkRegistryMetaData.ABI + +// ContractBLSApkRegistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ContractBLSApkRegistryMetaData.Bin instead. +var ContractBLSApkRegistryBin = ContractBLSApkRegistryMetaData.Bin + +// DeployContractBLSApkRegistry deploys a new Ethereum contract, binding an instance of ContractBLSApkRegistry to it. +func DeployContractBLSApkRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, _registryCoordinator common.Address) (common.Address, *types.Transaction, *ContractBLSApkRegistry, error) { + parsed, err := ContractBLSApkRegistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractBLSApkRegistryBin), backend, _registryCoordinator) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ContractBLSApkRegistry{ContractBLSApkRegistryCaller: ContractBLSApkRegistryCaller{contract: contract}, ContractBLSApkRegistryTransactor: ContractBLSApkRegistryTransactor{contract: contract}, ContractBLSApkRegistryFilterer: ContractBLSApkRegistryFilterer{contract: contract}}, nil +} + +// ContractBLSApkRegistry is an auto generated Go binding around an Ethereum contract. +type ContractBLSApkRegistry struct { + ContractBLSApkRegistryCaller // Read-only binding to the contract + ContractBLSApkRegistryTransactor // Write-only binding to the contract + ContractBLSApkRegistryFilterer // Log filterer for contract events +} + +// ContractBLSApkRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractBLSApkRegistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractBLSApkRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractBLSApkRegistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractBLSApkRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractBLSApkRegistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractBLSApkRegistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractBLSApkRegistrySession struct { + Contract *ContractBLSApkRegistry // 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 +} + +// ContractBLSApkRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractBLSApkRegistryCallerSession struct { + Contract *ContractBLSApkRegistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractBLSApkRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractBLSApkRegistryTransactorSession struct { + Contract *ContractBLSApkRegistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractBLSApkRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractBLSApkRegistryRaw struct { + Contract *ContractBLSApkRegistry // Generic contract binding to access the raw methods on +} + +// ContractBLSApkRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractBLSApkRegistryCallerRaw struct { + Contract *ContractBLSApkRegistryCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractBLSApkRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractBLSApkRegistryTransactorRaw struct { + Contract *ContractBLSApkRegistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractBLSApkRegistry creates a new instance of ContractBLSApkRegistry, bound to a specific deployed contract. +func NewContractBLSApkRegistry(address common.Address, backend bind.ContractBackend) (*ContractBLSApkRegistry, error) { + contract, err := bindContractBLSApkRegistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractBLSApkRegistry{ContractBLSApkRegistryCaller: ContractBLSApkRegistryCaller{contract: contract}, ContractBLSApkRegistryTransactor: ContractBLSApkRegistryTransactor{contract: contract}, ContractBLSApkRegistryFilterer: ContractBLSApkRegistryFilterer{contract: contract}}, nil +} + +// NewContractBLSApkRegistryCaller creates a new read-only instance of ContractBLSApkRegistry, bound to a specific deployed contract. +func NewContractBLSApkRegistryCaller(address common.Address, caller bind.ContractCaller) (*ContractBLSApkRegistryCaller, error) { + contract, err := bindContractBLSApkRegistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryCaller{contract: contract}, nil +} + +// NewContractBLSApkRegistryTransactor creates a new write-only instance of ContractBLSApkRegistry, bound to a specific deployed contract. +func NewContractBLSApkRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractBLSApkRegistryTransactor, error) { + contract, err := bindContractBLSApkRegistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryTransactor{contract: contract}, nil +} + +// NewContractBLSApkRegistryFilterer creates a new log filterer instance of ContractBLSApkRegistry, bound to a specific deployed contract. +func NewContractBLSApkRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractBLSApkRegistryFilterer, error) { + contract, err := bindContractBLSApkRegistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryFilterer{contract: contract}, nil +} + +// bindContractBLSApkRegistry binds a generic wrapper to an already deployed contract. +func bindContractBLSApkRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractBLSApkRegistryMetaData.GetAbi() + 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 (_ContractBLSApkRegistry *ContractBLSApkRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractBLSApkRegistry.Contract.ContractBLSApkRegistryCaller.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 (_ContractBLSApkRegistry *ContractBLSApkRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.ContractBLSApkRegistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractBLSApkRegistry *ContractBLSApkRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.ContractBLSApkRegistryTransactor.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 (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractBLSApkRegistry.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 (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.contract.Transact(opts, method, params...) +} + +// ApkHistory is a free data retrieval call binding the contract method 0x7916cea6. +// +// Solidity: function apkHistory(uint8 , uint256 ) view returns(bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) ApkHistory(opts *bind.CallOpts, arg0 uint8, arg1 *big.Int) (struct { + ApkHash [24]byte + UpdateBlockNumber uint32 + NextUpdateBlockNumber uint32 +}, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "apkHistory", arg0, arg1) + + outstruct := new(struct { + ApkHash [24]byte + UpdateBlockNumber uint32 + NextUpdateBlockNumber uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.ApkHash = *abi.ConvertType(out[0], new([24]byte)).(*[24]byte) + outstruct.UpdateBlockNumber = *abi.ConvertType(out[1], new(uint32)).(*uint32) + outstruct.NextUpdateBlockNumber = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// ApkHistory is a free data retrieval call binding the contract method 0x7916cea6. +// +// Solidity: function apkHistory(uint8 , uint256 ) view returns(bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) ApkHistory(arg0 uint8, arg1 *big.Int) (struct { + ApkHash [24]byte + UpdateBlockNumber uint32 + NextUpdateBlockNumber uint32 +}, error) { + return _ContractBLSApkRegistry.Contract.ApkHistory(&_ContractBLSApkRegistry.CallOpts, arg0, arg1) +} + +// ApkHistory is a free data retrieval call binding the contract method 0x7916cea6. +// +// Solidity: function apkHistory(uint8 , uint256 ) view returns(bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) ApkHistory(arg0 uint8, arg1 *big.Int) (struct { + ApkHash [24]byte + UpdateBlockNumber uint32 + NextUpdateBlockNumber uint32 +}, error) { + return _ContractBLSApkRegistry.Contract.ApkHistory(&_ContractBLSApkRegistry.CallOpts, arg0, arg1) +} + +// CurrentApk is a free data retrieval call binding the contract method 0xa3db80e2. +// +// Solidity: function currentApk(uint8 ) view returns(uint256 X, uint256 Y) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) CurrentApk(opts *bind.CallOpts, arg0 uint8) (struct { + X *big.Int + Y *big.Int +}, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "currentApk", arg0) + + outstruct := new(struct { + X *big.Int + Y *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.X = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Y = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// CurrentApk is a free data retrieval call binding the contract method 0xa3db80e2. +// +// Solidity: function currentApk(uint8 ) view returns(uint256 X, uint256 Y) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) CurrentApk(arg0 uint8) (struct { + X *big.Int + Y *big.Int +}, error) { + return _ContractBLSApkRegistry.Contract.CurrentApk(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// CurrentApk is a free data retrieval call binding the contract method 0xa3db80e2. +// +// Solidity: function currentApk(uint8 ) view returns(uint256 X, uint256 Y) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) CurrentApk(arg0 uint8) (struct { + X *big.Int + Y *big.Int +}, error) { + return _ContractBLSApkRegistry.Contract.CurrentApk(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// GetApk is a free data retrieval call binding the contract method 0x5f61a884. +// +// Solidity: function getApk(uint8 quorumNumber) view returns((uint256,uint256)) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetApk(opts *bind.CallOpts, quorumNumber uint8) (BN254G1Point, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getApk", quorumNumber) + + if err != nil { + return *new(BN254G1Point), err + } + + out0 := *abi.ConvertType(out[0], new(BN254G1Point)).(*BN254G1Point) + + return out0, err + +} + +// GetApk is a free data retrieval call binding the contract method 0x5f61a884. +// +// Solidity: function getApk(uint8 quorumNumber) view returns((uint256,uint256)) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetApk(quorumNumber uint8) (BN254G1Point, error) { + return _ContractBLSApkRegistry.Contract.GetApk(&_ContractBLSApkRegistry.CallOpts, quorumNumber) +} + +// GetApk is a free data retrieval call binding the contract method 0x5f61a884. +// +// Solidity: function getApk(uint8 quorumNumber) view returns((uint256,uint256)) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetApk(quorumNumber uint8) (BN254G1Point, error) { + return _ContractBLSApkRegistry.Contract.GetApk(&_ContractBLSApkRegistry.CallOpts, quorumNumber) +} + +// GetApkHashAtBlockNumberAndIndex is a free data retrieval call binding the contract method 0x68bccaac. +// +// Solidity: function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(bytes24) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetApkHashAtBlockNumberAndIndex(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32, index *big.Int) ([24]byte, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getApkHashAtBlockNumberAndIndex", quorumNumber, blockNumber, index) + + if err != nil { + return *new([24]byte), err + } + + out0 := *abi.ConvertType(out[0], new([24]byte)).(*[24]byte) + + return out0, err + +} + +// GetApkHashAtBlockNumberAndIndex is a free data retrieval call binding the contract method 0x68bccaac. +// +// Solidity: function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(bytes24) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetApkHashAtBlockNumberAndIndex(quorumNumber uint8, blockNumber uint32, index *big.Int) ([24]byte, error) { + return _ContractBLSApkRegistry.Contract.GetApkHashAtBlockNumberAndIndex(&_ContractBLSApkRegistry.CallOpts, quorumNumber, blockNumber, index) +} + +// GetApkHashAtBlockNumberAndIndex is a free data retrieval call binding the contract method 0x68bccaac. +// +// Solidity: function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(bytes24) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetApkHashAtBlockNumberAndIndex(quorumNumber uint8, blockNumber uint32, index *big.Int) ([24]byte, error) { + return _ContractBLSApkRegistry.Contract.GetApkHashAtBlockNumberAndIndex(&_ContractBLSApkRegistry.CallOpts, quorumNumber, blockNumber, index) +} + +// GetApkHistoryLength is a free data retrieval call binding the contract method 0x377ed99d. +// +// Solidity: function getApkHistoryLength(uint8 quorumNumber) view returns(uint32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetApkHistoryLength(opts *bind.CallOpts, quorumNumber uint8) (uint32, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getApkHistoryLength", quorumNumber) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// GetApkHistoryLength is a free data retrieval call binding the contract method 0x377ed99d. +// +// Solidity: function getApkHistoryLength(uint8 quorumNumber) view returns(uint32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetApkHistoryLength(quorumNumber uint8) (uint32, error) { + return _ContractBLSApkRegistry.Contract.GetApkHistoryLength(&_ContractBLSApkRegistry.CallOpts, quorumNumber) +} + +// GetApkHistoryLength is a free data retrieval call binding the contract method 0x377ed99d. +// +// Solidity: function getApkHistoryLength(uint8 quorumNumber) view returns(uint32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetApkHistoryLength(quorumNumber uint8) (uint32, error) { + return _ContractBLSApkRegistry.Contract.GetApkHistoryLength(&_ContractBLSApkRegistry.CallOpts, quorumNumber) +} + +// GetApkIndicesAtBlockNumber is a free data retrieval call binding the contract method 0xd5254a8c. +// +// Solidity: function getApkIndicesAtBlockNumber(bytes quorumNumbers, uint256 blockNumber) view returns(uint32[]) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetApkIndicesAtBlockNumber(opts *bind.CallOpts, quorumNumbers []byte, blockNumber *big.Int) ([]uint32, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getApkIndicesAtBlockNumber", quorumNumbers, blockNumber) + + if err != nil { + return *new([]uint32), err + } + + out0 := *abi.ConvertType(out[0], new([]uint32)).(*[]uint32) + + return out0, err + +} + +// GetApkIndicesAtBlockNumber is a free data retrieval call binding the contract method 0xd5254a8c. +// +// Solidity: function getApkIndicesAtBlockNumber(bytes quorumNumbers, uint256 blockNumber) view returns(uint32[]) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetApkIndicesAtBlockNumber(quorumNumbers []byte, blockNumber *big.Int) ([]uint32, error) { + return _ContractBLSApkRegistry.Contract.GetApkIndicesAtBlockNumber(&_ContractBLSApkRegistry.CallOpts, quorumNumbers, blockNumber) +} + +// GetApkIndicesAtBlockNumber is a free data retrieval call binding the contract method 0xd5254a8c. +// +// Solidity: function getApkIndicesAtBlockNumber(bytes quorumNumbers, uint256 blockNumber) view returns(uint32[]) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetApkIndicesAtBlockNumber(quorumNumbers []byte, blockNumber *big.Int) ([]uint32, error) { + return _ContractBLSApkRegistry.Contract.GetApkIndicesAtBlockNumber(&_ContractBLSApkRegistry.CallOpts, quorumNumbers, blockNumber) +} + +// GetApkUpdateAtIndex is a free data retrieval call binding the contract method 0x605747d5. +// +// Solidity: function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) view returns((bytes24,uint32,uint32)) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetApkUpdateAtIndex(opts *bind.CallOpts, quorumNumber uint8, index *big.Int) (IBLSApkRegistryApkUpdate, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getApkUpdateAtIndex", quorumNumber, index) + + if err != nil { + return *new(IBLSApkRegistryApkUpdate), err + } + + out0 := *abi.ConvertType(out[0], new(IBLSApkRegistryApkUpdate)).(*IBLSApkRegistryApkUpdate) + + return out0, err + +} + +// GetApkUpdateAtIndex is a free data retrieval call binding the contract method 0x605747d5. +// +// Solidity: function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) view returns((bytes24,uint32,uint32)) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetApkUpdateAtIndex(quorumNumber uint8, index *big.Int) (IBLSApkRegistryApkUpdate, error) { + return _ContractBLSApkRegistry.Contract.GetApkUpdateAtIndex(&_ContractBLSApkRegistry.CallOpts, quorumNumber, index) +} + +// GetApkUpdateAtIndex is a free data retrieval call binding the contract method 0x605747d5. +// +// Solidity: function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) view returns((bytes24,uint32,uint32)) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetApkUpdateAtIndex(quorumNumber uint8, index *big.Int) (IBLSApkRegistryApkUpdate, error) { + return _ContractBLSApkRegistry.Contract.GetApkUpdateAtIndex(&_ContractBLSApkRegistry.CallOpts, quorumNumber, index) +} + +// GetOperatorFromPubkeyHash is a free data retrieval call binding the contract method 0x47b314e8. +// +// Solidity: function getOperatorFromPubkeyHash(bytes32 pubkeyHash) view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetOperatorFromPubkeyHash(opts *bind.CallOpts, pubkeyHash [32]byte) (common.Address, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getOperatorFromPubkeyHash", pubkeyHash) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetOperatorFromPubkeyHash is a free data retrieval call binding the contract method 0x47b314e8. +// +// Solidity: function getOperatorFromPubkeyHash(bytes32 pubkeyHash) view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetOperatorFromPubkeyHash(pubkeyHash [32]byte) (common.Address, error) { + return _ContractBLSApkRegistry.Contract.GetOperatorFromPubkeyHash(&_ContractBLSApkRegistry.CallOpts, pubkeyHash) +} + +// GetOperatorFromPubkeyHash is a free data retrieval call binding the contract method 0x47b314e8. +// +// Solidity: function getOperatorFromPubkeyHash(bytes32 pubkeyHash) view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetOperatorFromPubkeyHash(pubkeyHash [32]byte) (common.Address, error) { + return _ContractBLSApkRegistry.Contract.GetOperatorFromPubkeyHash(&_ContractBLSApkRegistry.CallOpts, pubkeyHash) +} + +// GetOperatorId is a free data retrieval call binding the contract method 0x13542a4e. +// +// Solidity: function getOperatorId(address operator) view returns(bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetOperatorId(opts *bind.CallOpts, operator common.Address) ([32]byte, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getOperatorId", operator) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetOperatorId is a free data retrieval call binding the contract method 0x13542a4e. +// +// Solidity: function getOperatorId(address operator) view returns(bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetOperatorId(operator common.Address) ([32]byte, error) { + return _ContractBLSApkRegistry.Contract.GetOperatorId(&_ContractBLSApkRegistry.CallOpts, operator) +} + +// GetOperatorId is a free data retrieval call binding the contract method 0x13542a4e. +// +// Solidity: function getOperatorId(address operator) view returns(bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetOperatorId(operator common.Address) ([32]byte, error) { + return _ContractBLSApkRegistry.Contract.GetOperatorId(&_ContractBLSApkRegistry.CallOpts, operator) +} + +// GetRegisteredPubkey is a free data retrieval call binding the contract method 0x7ff81a87. +// +// Solidity: function getRegisteredPubkey(address operator) view returns((uint256,uint256), bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) GetRegisteredPubkey(opts *bind.CallOpts, operator common.Address) (BN254G1Point, [32]byte, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "getRegisteredPubkey", operator) + + if err != nil { + return *new(BN254G1Point), *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new(BN254G1Point)).(*BN254G1Point) + out1 := *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + + return out0, out1, err + +} + +// GetRegisteredPubkey is a free data retrieval call binding the contract method 0x7ff81a87. +// +// Solidity: function getRegisteredPubkey(address operator) view returns((uint256,uint256), bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) GetRegisteredPubkey(operator common.Address) (BN254G1Point, [32]byte, error) { + return _ContractBLSApkRegistry.Contract.GetRegisteredPubkey(&_ContractBLSApkRegistry.CallOpts, operator) +} + +// GetRegisteredPubkey is a free data retrieval call binding the contract method 0x7ff81a87. +// +// Solidity: function getRegisteredPubkey(address operator) view returns((uint256,uint256), bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) GetRegisteredPubkey(operator common.Address) (BN254G1Point, [32]byte, error) { + return _ContractBLSApkRegistry.Contract.GetRegisteredPubkey(&_ContractBLSApkRegistry.CallOpts, operator) +} + +// OperatorToPubkey is a free data retrieval call binding the contract method 0x00a1f4cb. +// +// Solidity: function operatorToPubkey(address ) view returns(uint256 X, uint256 Y) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) OperatorToPubkey(opts *bind.CallOpts, arg0 common.Address) (struct { + X *big.Int + Y *big.Int +}, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "operatorToPubkey", arg0) + + outstruct := new(struct { + X *big.Int + Y *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.X = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Y = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// OperatorToPubkey is a free data retrieval call binding the contract method 0x00a1f4cb. +// +// Solidity: function operatorToPubkey(address ) view returns(uint256 X, uint256 Y) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) OperatorToPubkey(arg0 common.Address) (struct { + X *big.Int + Y *big.Int +}, error) { + return _ContractBLSApkRegistry.Contract.OperatorToPubkey(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// OperatorToPubkey is a free data retrieval call binding the contract method 0x00a1f4cb. +// +// Solidity: function operatorToPubkey(address ) view returns(uint256 X, uint256 Y) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) OperatorToPubkey(arg0 common.Address) (struct { + X *big.Int + Y *big.Int +}, error) { + return _ContractBLSApkRegistry.Contract.OperatorToPubkey(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// OperatorToPubkeyHash is a free data retrieval call binding the contract method 0xde29fac0. +// +// Solidity: function operatorToPubkeyHash(address ) view returns(bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) OperatorToPubkeyHash(opts *bind.CallOpts, arg0 common.Address) ([32]byte, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "operatorToPubkeyHash", arg0) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// OperatorToPubkeyHash is a free data retrieval call binding the contract method 0xde29fac0. +// +// Solidity: function operatorToPubkeyHash(address ) view returns(bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) OperatorToPubkeyHash(arg0 common.Address) ([32]byte, error) { + return _ContractBLSApkRegistry.Contract.OperatorToPubkeyHash(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// OperatorToPubkeyHash is a free data retrieval call binding the contract method 0xde29fac0. +// +// Solidity: function operatorToPubkeyHash(address ) view returns(bytes32) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) OperatorToPubkeyHash(arg0 common.Address) ([32]byte, error) { + return _ContractBLSApkRegistry.Contract.OperatorToPubkeyHash(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// PubkeyHashToOperator is a free data retrieval call binding the contract method 0xe8bb9ae6. +// +// Solidity: function pubkeyHashToOperator(bytes32 ) view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) PubkeyHashToOperator(opts *bind.CallOpts, arg0 [32]byte) (common.Address, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "pubkeyHashToOperator", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PubkeyHashToOperator is a free data retrieval call binding the contract method 0xe8bb9ae6. +// +// Solidity: function pubkeyHashToOperator(bytes32 ) view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) PubkeyHashToOperator(arg0 [32]byte) (common.Address, error) { + return _ContractBLSApkRegistry.Contract.PubkeyHashToOperator(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// PubkeyHashToOperator is a free data retrieval call binding the contract method 0xe8bb9ae6. +// +// Solidity: function pubkeyHashToOperator(bytes32 ) view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) PubkeyHashToOperator(arg0 [32]byte) (common.Address, error) { + return _ContractBLSApkRegistry.Contract.PubkeyHashToOperator(&_ContractBLSApkRegistry.CallOpts, arg0) +} + +// RegistryCoordinator is a free data retrieval call binding the contract method 0x6d14a987. +// +// Solidity: function registryCoordinator() view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCaller) RegistryCoordinator(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractBLSApkRegistry.contract.Call(opts, &out, "registryCoordinator") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RegistryCoordinator is a free data retrieval call binding the contract method 0x6d14a987. +// +// Solidity: function registryCoordinator() view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) RegistryCoordinator() (common.Address, error) { + return _ContractBLSApkRegistry.Contract.RegistryCoordinator(&_ContractBLSApkRegistry.CallOpts) +} + +// RegistryCoordinator is a free data retrieval call binding the contract method 0x6d14a987. +// +// Solidity: function registryCoordinator() view returns(address) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryCallerSession) RegistryCoordinator() (common.Address, error) { + return _ContractBLSApkRegistry.Contract.RegistryCoordinator(&_ContractBLSApkRegistry.CallOpts) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xf4e24fe5. +// +// Solidity: function deregisterOperator(address operator, bytes quorumNumbers) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactor) DeregisterOperator(opts *bind.TransactOpts, operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractBLSApkRegistry.contract.Transact(opts, "deregisterOperator", operator, quorumNumbers) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xf4e24fe5. +// +// Solidity: function deregisterOperator(address operator, bytes quorumNumbers) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) DeregisterOperator(operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.DeregisterOperator(&_ContractBLSApkRegistry.TransactOpts, operator, quorumNumbers) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xf4e24fe5. +// +// Solidity: function deregisterOperator(address operator, bytes quorumNumbers) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactorSession) DeregisterOperator(operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.DeregisterOperator(&_ContractBLSApkRegistry.TransactOpts, operator, quorumNumbers) +} + +// InitializeQuorum is a paid mutator transaction binding the contract method 0x26d941f2. +// +// Solidity: function initializeQuorum(uint8 quorumNumber) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactor) InitializeQuorum(opts *bind.TransactOpts, quorumNumber uint8) (*types.Transaction, error) { + return _ContractBLSApkRegistry.contract.Transact(opts, "initializeQuorum", quorumNumber) +} + +// InitializeQuorum is a paid mutator transaction binding the contract method 0x26d941f2. +// +// Solidity: function initializeQuorum(uint8 quorumNumber) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) InitializeQuorum(quorumNumber uint8) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.InitializeQuorum(&_ContractBLSApkRegistry.TransactOpts, quorumNumber) +} + +// InitializeQuorum is a paid mutator transaction binding the contract method 0x26d941f2. +// +// Solidity: function initializeQuorum(uint8 quorumNumber) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactorSession) InitializeQuorum(quorumNumber uint8) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.InitializeQuorum(&_ContractBLSApkRegistry.TransactOpts, quorumNumber) +} + +// RegisterBLSPublicKey is a paid mutator transaction binding the contract method 0xbf79ce58. +// +// Solidity: function registerBLSPublicKey(address operator, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (uint256,uint256) pubkeyRegistrationMessageHash) returns(bytes32 operatorId) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactor) RegisterBLSPublicKey(opts *bind.TransactOpts, operator common.Address, params IBLSApkRegistryPubkeyRegistrationParams, pubkeyRegistrationMessageHash BN254G1Point) (*types.Transaction, error) { + return _ContractBLSApkRegistry.contract.Transact(opts, "registerBLSPublicKey", operator, params, pubkeyRegistrationMessageHash) +} + +// RegisterBLSPublicKey is a paid mutator transaction binding the contract method 0xbf79ce58. +// +// Solidity: function registerBLSPublicKey(address operator, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (uint256,uint256) pubkeyRegistrationMessageHash) returns(bytes32 operatorId) +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) RegisterBLSPublicKey(operator common.Address, params IBLSApkRegistryPubkeyRegistrationParams, pubkeyRegistrationMessageHash BN254G1Point) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.RegisterBLSPublicKey(&_ContractBLSApkRegistry.TransactOpts, operator, params, pubkeyRegistrationMessageHash) +} + +// RegisterBLSPublicKey is a paid mutator transaction binding the contract method 0xbf79ce58. +// +// Solidity: function registerBLSPublicKey(address operator, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (uint256,uint256) pubkeyRegistrationMessageHash) returns(bytes32 operatorId) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactorSession) RegisterBLSPublicKey(operator common.Address, params IBLSApkRegistryPubkeyRegistrationParams, pubkeyRegistrationMessageHash BN254G1Point) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.RegisterBLSPublicKey(&_ContractBLSApkRegistry.TransactOpts, operator, params, pubkeyRegistrationMessageHash) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3fb27952. +// +// Solidity: function registerOperator(address operator, bytes quorumNumbers) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactor) RegisterOperator(opts *bind.TransactOpts, operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractBLSApkRegistry.contract.Transact(opts, "registerOperator", operator, quorumNumbers) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3fb27952. +// +// Solidity: function registerOperator(address operator, bytes quorumNumbers) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistrySession) RegisterOperator(operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.RegisterOperator(&_ContractBLSApkRegistry.TransactOpts, operator, quorumNumbers) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3fb27952. +// +// Solidity: function registerOperator(address operator, bytes quorumNumbers) returns() +func (_ContractBLSApkRegistry *ContractBLSApkRegistryTransactorSession) RegisterOperator(operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractBLSApkRegistry.Contract.RegisterOperator(&_ContractBLSApkRegistry.TransactOpts, operator, quorumNumbers) +} + +// ContractBLSApkRegistryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryInitializedIterator struct { + Event *ContractBLSApkRegistryInitialized // 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 *ContractBLSApkRegistryInitializedIterator) 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(ContractBLSApkRegistryInitialized) + 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(ContractBLSApkRegistryInitialized) + 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 *ContractBLSApkRegistryInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractBLSApkRegistryInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractBLSApkRegistryInitialized represents a Initialized event raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractBLSApkRegistryInitializedIterator, error) { + + logs, sub, err := _ContractBLSApkRegistry.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryInitializedIterator{contract: _ContractBLSApkRegistry.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractBLSApkRegistryInitialized) (event.Subscription, error) { + + logs, sub, err := _ContractBLSApkRegistry.contract.WatchLogs(opts, "Initialized") + 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(ContractBLSApkRegistryInitialized) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) ParseInitialized(log types.Log) (*ContractBLSApkRegistryInitialized, error) { + event := new(ContractBLSApkRegistryInitialized) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractBLSApkRegistryNewPubkeyRegistrationIterator is returned from FilterNewPubkeyRegistration and is used to iterate over the raw logs and unpacked data for NewPubkeyRegistration events raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryNewPubkeyRegistrationIterator struct { + Event *ContractBLSApkRegistryNewPubkeyRegistration // 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 *ContractBLSApkRegistryNewPubkeyRegistrationIterator) 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(ContractBLSApkRegistryNewPubkeyRegistration) + 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(ContractBLSApkRegistryNewPubkeyRegistration) + 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 *ContractBLSApkRegistryNewPubkeyRegistrationIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractBLSApkRegistryNewPubkeyRegistrationIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractBLSApkRegistryNewPubkeyRegistration represents a NewPubkeyRegistration event raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryNewPubkeyRegistration struct { + Operator common.Address + PubkeyG1 BN254G1Point + PubkeyG2 BN254G2Point + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewPubkeyRegistration is a free log retrieval operation binding the contract event 0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041. +// +// Solidity: event NewPubkeyRegistration(address indexed operator, (uint256,uint256) pubkeyG1, (uint256[2],uint256[2]) pubkeyG2) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) FilterNewPubkeyRegistration(opts *bind.FilterOpts, operator []common.Address) (*ContractBLSApkRegistryNewPubkeyRegistrationIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractBLSApkRegistry.contract.FilterLogs(opts, "NewPubkeyRegistration", operatorRule) + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryNewPubkeyRegistrationIterator{contract: _ContractBLSApkRegistry.contract, event: "NewPubkeyRegistration", logs: logs, sub: sub}, nil +} + +// WatchNewPubkeyRegistration is a free log subscription operation binding the contract event 0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041. +// +// Solidity: event NewPubkeyRegistration(address indexed operator, (uint256,uint256) pubkeyG1, (uint256[2],uint256[2]) pubkeyG2) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) WatchNewPubkeyRegistration(opts *bind.WatchOpts, sink chan<- *ContractBLSApkRegistryNewPubkeyRegistration, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractBLSApkRegistry.contract.WatchLogs(opts, "NewPubkeyRegistration", operatorRule) + 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(ContractBLSApkRegistryNewPubkeyRegistration) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "NewPubkeyRegistration", 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 +} + +// ParseNewPubkeyRegistration is a log parse operation binding the contract event 0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041. +// +// Solidity: event NewPubkeyRegistration(address indexed operator, (uint256,uint256) pubkeyG1, (uint256[2],uint256[2]) pubkeyG2) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) ParseNewPubkeyRegistration(log types.Log) (*ContractBLSApkRegistryNewPubkeyRegistration, error) { + event := new(ContractBLSApkRegistryNewPubkeyRegistration) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "NewPubkeyRegistration", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractBLSApkRegistryOperatorAddedToQuorumsIterator is returned from FilterOperatorAddedToQuorums and is used to iterate over the raw logs and unpacked data for OperatorAddedToQuorums events raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryOperatorAddedToQuorumsIterator struct { + Event *ContractBLSApkRegistryOperatorAddedToQuorums // 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 *ContractBLSApkRegistryOperatorAddedToQuorumsIterator) 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(ContractBLSApkRegistryOperatorAddedToQuorums) + 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(ContractBLSApkRegistryOperatorAddedToQuorums) + 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 *ContractBLSApkRegistryOperatorAddedToQuorumsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractBLSApkRegistryOperatorAddedToQuorumsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractBLSApkRegistryOperatorAddedToQuorums represents a OperatorAddedToQuorums event raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryOperatorAddedToQuorums struct { + Operator common.Address + QuorumNumbers []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAddedToQuorums is a free log retrieval operation binding the contract event 0x5358c5b42179178c8fc757734ac2a3198f9071c765ee0d8389211525f5005246. +// +// Solidity: event OperatorAddedToQuorums(address operator, bytes quorumNumbers) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) FilterOperatorAddedToQuorums(opts *bind.FilterOpts) (*ContractBLSApkRegistryOperatorAddedToQuorumsIterator, error) { + + logs, sub, err := _ContractBLSApkRegistry.contract.FilterLogs(opts, "OperatorAddedToQuorums") + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryOperatorAddedToQuorumsIterator{contract: _ContractBLSApkRegistry.contract, event: "OperatorAddedToQuorums", logs: logs, sub: sub}, nil +} + +// WatchOperatorAddedToQuorums is a free log subscription operation binding the contract event 0x5358c5b42179178c8fc757734ac2a3198f9071c765ee0d8389211525f5005246. +// +// Solidity: event OperatorAddedToQuorums(address operator, bytes quorumNumbers) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) WatchOperatorAddedToQuorums(opts *bind.WatchOpts, sink chan<- *ContractBLSApkRegistryOperatorAddedToQuorums) (event.Subscription, error) { + + logs, sub, err := _ContractBLSApkRegistry.contract.WatchLogs(opts, "OperatorAddedToQuorums") + 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(ContractBLSApkRegistryOperatorAddedToQuorums) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "OperatorAddedToQuorums", 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 +} + +// ParseOperatorAddedToQuorums is a log parse operation binding the contract event 0x5358c5b42179178c8fc757734ac2a3198f9071c765ee0d8389211525f5005246. +// +// Solidity: event OperatorAddedToQuorums(address operator, bytes quorumNumbers) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) ParseOperatorAddedToQuorums(log types.Log) (*ContractBLSApkRegistryOperatorAddedToQuorums, error) { + event := new(ContractBLSApkRegistryOperatorAddedToQuorums) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "OperatorAddedToQuorums", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator is returned from FilterOperatorRemovedFromQuorums and is used to iterate over the raw logs and unpacked data for OperatorRemovedFromQuorums events raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator struct { + Event *ContractBLSApkRegistryOperatorRemovedFromQuorums // 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 *ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator) 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(ContractBLSApkRegistryOperatorRemovedFromQuorums) + 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(ContractBLSApkRegistryOperatorRemovedFromQuorums) + 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 *ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractBLSApkRegistryOperatorRemovedFromQuorums represents a OperatorRemovedFromQuorums event raised by the ContractBLSApkRegistry contract. +type ContractBLSApkRegistryOperatorRemovedFromQuorums struct { + Operator common.Address + QuorumNumbers []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorRemovedFromQuorums is a free log retrieval operation binding the contract event 0x14a5172b312e9d2c22b8468f9c70ec2caa9de934fe380734fbc6f3beff2b14ba. +// +// Solidity: event OperatorRemovedFromQuorums(address operator, bytes quorumNumbers) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) FilterOperatorRemovedFromQuorums(opts *bind.FilterOpts) (*ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator, error) { + + logs, sub, err := _ContractBLSApkRegistry.contract.FilterLogs(opts, "OperatorRemovedFromQuorums") + if err != nil { + return nil, err + } + return &ContractBLSApkRegistryOperatorRemovedFromQuorumsIterator{contract: _ContractBLSApkRegistry.contract, event: "OperatorRemovedFromQuorums", logs: logs, sub: sub}, nil +} + +// WatchOperatorRemovedFromQuorums is a free log subscription operation binding the contract event 0x14a5172b312e9d2c22b8468f9c70ec2caa9de934fe380734fbc6f3beff2b14ba. +// +// Solidity: event OperatorRemovedFromQuorums(address operator, bytes quorumNumbers) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) WatchOperatorRemovedFromQuorums(opts *bind.WatchOpts, sink chan<- *ContractBLSApkRegistryOperatorRemovedFromQuorums) (event.Subscription, error) { + + logs, sub, err := _ContractBLSApkRegistry.contract.WatchLogs(opts, "OperatorRemovedFromQuorums") + 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(ContractBLSApkRegistryOperatorRemovedFromQuorums) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "OperatorRemovedFromQuorums", 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 +} + +// ParseOperatorRemovedFromQuorums is a log parse operation binding the contract event 0x14a5172b312e9d2c22b8468f9c70ec2caa9de934fe380734fbc6f3beff2b14ba. +// +// Solidity: event OperatorRemovedFromQuorums(address operator, bytes quorumNumbers) +func (_ContractBLSApkRegistry *ContractBLSApkRegistryFilterer) ParseOperatorRemovedFromQuorums(log types.Log) (*ContractBLSApkRegistryOperatorRemovedFromQuorums, error) { + event := new(ContractBLSApkRegistryOperatorRemovedFromQuorums) + if err := _ContractBLSApkRegistry.contract.UnpackLog(event, "OperatorRemovedFromQuorums", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/BN254/binding.go b/contracts/bindings/BN254/binding.go index 70424dcda..b2e590483 100644 --- a/contracts/bindings/BN254/binding.go +++ b/contracts/bindings/BN254/binding.go @@ -32,7 +32,7 @@ var ( // ContractBN254MetaData contains all meta data concerning the ContractBN254 contract. var ContractBN254MetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5a8db46ebeadc81daf25d049ae1d5a9c1938ecb2b3f71425c1f2524436e9c1c64736f6c634300080c0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220882629219b4c242edd982fdb72abc5561e3573f52fb7c6cfa854980515a5328064736f6c634300080c0033", } // ContractBN254ABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/BitmapUtils/binding.go b/contracts/bindings/BitmapUtils/binding.go index 5d18ceb8a..92a34cb4d 100644 --- a/contracts/bindings/BitmapUtils/binding.go +++ b/contracts/bindings/BitmapUtils/binding.go @@ -32,7 +32,7 @@ var ( // ContractBitmapUtilsMetaData contains all meta data concerning the ContractBitmapUtils contract. var ContractBitmapUtilsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033a56cbbaf2d1730d1a4d73cb150779e566cdab62ada1b5b1c2cac844e9cd60164736f6c634300080c0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ccbb1b90bcf5ac5be5c7dc51b569b2c22a02db7c9f282417d236940ec2142ed264736f6c634300080c0033", } // ContractBitmapUtilsABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/DelegationManager/binding.go b/contracts/bindings/DelegationManager/binding.go new file mode 100644 index 000000000..bbffbf7fa --- /dev/null +++ b/contracts/bindings/DelegationManager/binding.go @@ -0,0 +1,4574 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractDelegationManager + +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 + _ = abi.ConvertType +) + +// IDelegationManagerOperatorDetails is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerOperatorDetails struct { + EarningsReceiver common.Address + DelegationApprover common.Address + StakerOptOutWindowBlocks uint32 +} + +// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerQueuedWithdrawalParams struct { + Strategies []common.Address + Shares []*big.Int + Withdrawer common.Address +} + +// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerWithdrawal struct { + Staker common.Address + DelegatedTo common.Address + Withdrawer common.Address + Nonce *big.Int + StartBlock uint32 + Strategies []common.Address + Shares []*big.Int +} + +// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithExpiry struct { + Signature []byte + Expiry *big.Int +} + +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// ContractDelegationManagerMetaData contains all meta data concerning the ContractDelegationManager contract. +var ContractDelegationManagerMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIDelegationManager.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_stakerNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateToBySignature\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegatedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"earningsReceiver\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDelegatableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerOptOutWindowBlocks\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIDelegationManager.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDetailsModified\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalMigrated\",\"inputs\":[{\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", + Bin: "0x6101006040523480156200001257600080fd5b5060405162005fb038038062005fb0833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615d87620002296000396000612b660152600081816105f2015281816110b2015281816112d6015281816120c601528181612ebf01528181613d1001526144d70152600061083f01526000818161054a01528181611080015281816112a4015281816115cc0152818161215a01528181612f7101528181613e3e015261457d0152615d876000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806365da1264116101de578063b13442711161010f578063d79aceab116100ad578063f16172b01161007c578063f16172b0146109f5578063f2fde38b14610a08578063f698da2514610a1b578063fabc1cbc14610a2357600080fd5b8063d79aceab14610995578063da8be864146109bc578063eb990c59146109cf578063eea9064b146109e257600080fd5b8063c5e480db116100e9578063c5e480db146108b2578063c94b511114610958578063ca661c041461096b578063cf80873e1461097457600080fd5b8063b13442711461083a578063b7f06ebe14610861578063bb45fef21461088457600080fd5b80639104c3191161017c578063a1060c8811610156578063a1060c88146107e1578063a1788484146107f4578063a364f4da14610814578063a98fb3551461082757600080fd5b80639104c319146107a05780639926ee7d146107bb57806399be81c8146107ce57600080fd5b8063778e55f3116101b8578063778e55f31461073e5780637f54807114610769578063886f11951461077c5780638da5cb5b1461078f57600080fd5b806365da1264146106fa5780636d70f7ae14610723578063715018a61461073657600080fd5b806339b70e38116102c357806350f73e7c116102615780635c975abb116102305780635c975abb146106a05780635cfe8d2c146106a85780635f966f14146106bb57806360d7faed146106e757600080fd5b806350f73e7c14610659578063595c6a6714610662578063597b36da1461066a5780635ac86ab71461067d57600080fd5b8063433773821161029d57806343377382146105c65780634665bcda146105ed57806349075da3146106145780634fc40b611461064f57600080fd5b806339b70e38146105455780633cdeb5e0146105845780633e28391d146105b357600080fd5b8063169283651161033057806328a573ae1161030a57806328a573ae146104c157806329c77d4f146104d457806333404396146104f4578063374823b51461050757600080fd5b8063169283651461044e5780631bbce0911461048757806320606b701461049a57600080fd5b80630f589e591161036c5780630f589e591461040057806310d67a2f14610415578063132d496714610428578063136439dd1461043b57600080fd5b806304a4f979146103935780630b9f487a146103cd5780630dd8dd02146103e0575b600080fd5b6103ba7f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103ba6103db36600461496f565b610a36565b6103f36103ee366004614a0e565b610af8565b6040516103c49190614a4f565b61041361040e366004614aec565b610e72565b005b610413610423366004614b3f565b610fc2565b610413610436366004614b63565b611075565b610413610449366004614ba4565b61112c565b6103ba61045c366004614b3f565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103ba610495366004614b63565b61126b565b6103ba7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104136104cf366004614b63565b611299565b6103ba6104e2366004614b3f565b609b6020526000908152604090205481565b610413610502366004614bbd565b611349565b610535610515366004614c80565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103c4565b61056c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103c4565b61056c610592366004614b3f565b6001600160a01b039081166000908152609960205260409020600101541690565b6105356105c1366004614b3f565b611486565b6103ba7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61056c7f000000000000000000000000000000000000000000000000000000000000000081565b610642610622366004614cac565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103c49190614cfb565b6103ba6213c68081565b6103ba609d5481565b6104136114a6565b6103ba610678366004614fa0565b61156d565b61053561068b366004614fdc565b606654600160ff9092169190911b9081161490565b6066546103ba565b6104136106b6366004615052565b61159d565b61056c6106c9366004614b3f565b6001600160a01b039081166000908152609960205260409020541690565b6104136106f53660046151b2565b611848565b61056c610708366004614b3f565b609a602052600090815260409020546001600160a01b031681565b610535610731366004614b3f565b6118e3565b610413611903565b6103ba61074c366004614cac565b609860209081526000928352604080842090915290825290205481565b610413610777366004615301565b611917565b60655461056c906001600160a01b031681565b6033546001600160a01b031661056c565b61056c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104136107c9366004615391565b611a1c565b6104136107dc36600461543c565b611d28565b6103ba6107ef366004615471565b611dfa565b6103ba610802366004614b3f565b609f6020526000908152604090205481565b610413610822366004614b3f565b611eba565b61041361083536600461543c565b612005565b61056c7f000000000000000000000000000000000000000000000000000000000000000081565b61053561086f366004614ba4565b609e6020526000908152604090205460ff1681565b610535610892366004614c80565b609c60209081526000928352604080842090915290825290205460ff1681565b6109226108c0366004614b3f565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103c4565b6103ba6109663660046154b7565b612040565b6103ba61c4e081565b610987610982366004614b3f565b61209f565b6040516103c4929190615573565b6103ba7ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103f36109ca366004614b3f565b612457565b6104136109dd366004615471565b61291b565b6104136109f0366004615598565b612a4f565b610413610a033660046155f0565b612a5b565b610413610a16366004614b3f565b612aec565b6103ba612b62565b610413610a31366004614ba4565b612ba0565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ab4612b62565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b2d5760405162461bcd60e51b8152600401610b249061560c565b60405180910390fd5b6000836001600160401b03811115610b4757610b47614d23565b604051908082528060200260200182016040528015610b70578160200160208202803683370190505b50905060005b84811015610e6957858582818110610b9057610b90615643565b9050602002810190610ba29190615659565b610bb0906020810190615679565b9050868683818110610bc457610bc4615643565b9050602002810190610bd69190615659565b610be09080615679565b905014610c555760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b24565b6000868683818110610c6957610c69615643565b9050602002810190610c7b9190615659565b610c8c906060810190604001614b3f565b6001600160a01b03161415610d1a5760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b24565b336000818152609a60205260409020546001600160a01b031690610e399082898986818110610d4b57610d4b615643565b9050602002810190610d5d9190615659565b610d6e906060810190604001614b3f565b8a8a87818110610d8057610d80615643565b9050602002810190610d929190615659565b610d9c9080615679565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610de257610de2615643565b9050602002810190610df49190615659565b610e02906020810190615679565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cfc92505050565b838381518110610e4b57610e4b615643565b60209081029190910101525080610e61816156d8565b915050610b76565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f0c5760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b24565b610f16338461311e565b604080518082019091526060815260006020820152610f3833808360006133ba565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7191906156f3565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb4929190615745565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190615774565b6001600160a01b0316336001600160a01b0316146110695760405162461bcd60e51b8152600401610b2490615791565b6110728161376a565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d45750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110f05760405162461bcd60e51b8152600401610b24906157db565b6110f983611486565b15611127576001600160a01b038084166000908152609a60205260409020541661112581858585613861565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111989190615838565b6111b45760405162461bcd60e51b8152600401610b2490615855565b6066548181161461122d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b24565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129085828686612040565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112f85750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113145760405162461bcd60e51b8152600401610b24906157db565b61131d83611486565b15611127576001600160a01b038084166000908152609a602052604090205416611125818585856138dc565b606654600290600490811614156113725760405162461bcd60e51b8152600401610b249061560c565b600260c95414156113c55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b24565b600260c95560005b88811015611475576114658a8a838181106113ea576113ea615643565b90506020028101906113fc919061589d565b89898481811061140e5761140e615643565b90506020028101906114209190615679565b89898681811061143257611432615643565b9050602002013588888781811061144b5761144b615643565b905060200201602081019061146091906158b3565b613957565b61146e816156d8565b90506113cd565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190615838565b61152e5760405162461bcd60e51b8152600401610b2490615855565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016115809190615944565b604051602081830303815290604052805190602001209050919050565b60005b81518110156118445760008282815181106115bd576115bd615643565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016116169190615957565b60408051808303816000875af1158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190615a06565b915091508115611836576040808401516001600160a01b0381166000908152609f6020529182208054919282919061168f836156d8565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff1681526020018760000151815260200187602001518152509050600061170f8261156d565b6000818152609e602052604090205490915060ff16156117a55760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b24565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906117f09083908590615a34565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506115a0565b5050565b606654600290600490811614156118715760405162461bcd60e51b8152600401610b249061560c565b600260c95414156118c45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b24565b600260c9556118d68686868686613957565b5050600160c95550505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61190b613fbf565b6119156000614019565b565b428360200151101561199b5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b24565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119d78783888860200151612040565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611a07908890839061406b565b611a13878786866133ba565b50505050505050565b60665460039060089081161415611a455760405162461bcd60e51b8152600401610b249061560c565b4282604001511015611ab95760405162461bcd60e51b81526020600482015260436024820152600080516020615d1283398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b24565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611af357611af3614ce5565b1415611b635760405162461bcd60e51b815260206004820152604460248201819052600080516020615d12833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b24565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611bee5760405162461bcd60e51b815260206004820152603b6024820152600080516020615d1283398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b24565b611bf7836118e3565b611c725760405162461bcd60e51b81526020600482015260526024820152600080516020615d1283398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b24565b6000611c88843385602001518660400151611dfa565b9050611c998482856000015161406b565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611d1a9190614cfb565b60405180910390a350505050565b611d31336118e3565b611db35760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b24565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611dee929190615745565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611e77612b62565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611ee35760405162461bcd60e51b8152600401610b249061560c565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611f1d57611f1d614ce5565b14611f9e5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b24565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611ff99190614cfb565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611dee929190615745565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611e55565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121339190615a4d565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156121a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121cb9190810190615ac1565b91509150600083136121e257909590945092505050565b60608083516000141561229c576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260008151811061225757612257615643565b60200260200101906001600160a01b031690816001600160a01b031681525050848160008151811061228b5761228b615643565b60200260200101818152505061244a565b83516122a9906001615b85565b6001600160401b038111156122c0576122c0614d23565b6040519080825280602002602001820160405280156122e9578160200160208202803683370190505b50915081516001600160401b0381111561230557612305614d23565b60405190808252806020026020018201604052801561232e578160200160208202803683370190505b50905060005b84518110156123c85784818151811061234f5761234f615643565b602002602001015183828151811061236957612369615643565b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061239b5761239b615643565b60200260200101518282815181106123b5576123b5615643565b6020908102919091010152600101612334565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516123ed9190615b9d565b815181106123fd576123fd615643565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161242d9190615b9d565b8151811061243d5761243d615643565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156124835760405162461bcd60e51b8152600401610b249061560c565b61248c83611486565b61250c5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b24565b612515836118e3565b156125885760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b24565b6001600160a01b0383166126045760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b24565b6001600160a01b038084166000818152609a6020526040902054909116903314806126375750336001600160a01b038216145b8061265e57506001600160a01b038181166000908152609960205260409020600101541633145b6126d05760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b24565b6000806126dc8661209f565b9092509050336001600160a01b0387161461273257826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516127b4576040805160008152602081019091529450612912565b81516001600160401b038111156127cd576127cd614d23565b6040519080825280602002602001820160405280156127f6578160200160208202803683370190505b50945060005b82518110156129105760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061285c5761285c615643565b60200260200101518260008151811061287757612877615643565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106128a9576128a9615643565b6020026020010151816000815181106128c4576128c4615643565b6020026020010181815250506128dd89878b8585612cfc565b8884815181106128ef576128ef615643565b60200260200101818152505050508080612908906156d8565b9150506127fc565b505b50505050919050565b600054610100900460ff161580801561293b5750600054600160ff909116105b806129555750303b158015612955575060005460ff166001145b6129b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b24565b6000805460ff1916600117905580156129db576000805461ff0019166101001790555b6129e58484614225565b6129ed61430b565b6097556129f985614019565b612a02826143a2565b8015612a48576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b611127338484846133ba565b612a64336118e3565b612ae25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b24565b611072338261311e565b612af4613fbf565b6001600160a01b038116612b595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b24565b61107281614019565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612b93575060975490565b612b9b61430b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c179190615774565b6001600160a01b0316336001600160a01b031614612c475760405162461bcd60e51b8152600401610b2490615791565b606654198119606654191614612cc55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b24565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001611260565b60006001600160a01b038616612d935760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b24565b8251612e1d5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b24565b60005b835181101561302c576001600160a01b03861615612e7657612e768688868481518110612e4f57612e4f615643565b6020026020010151868581518110612e6957612e69615643565b6020026020010151613861565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ea657612ea6615643565b60200260200101516001600160a01b03161415612f6f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612eff57612eff615643565b60200260200101516040518363ffffffff1660e01b8152600401612f389291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612f5257600080fd5b505af1158015612f66573d6000803e3d6000fd5b50505050613024565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612fb157612fb1615643565b6020026020010151868581518110612fcb57612fcb615643565b60200260200101516040518463ffffffff1660e01b8152600401612ff193929190615bb4565b600060405180830381600087803b15801561300b57600080fd5b505af115801561301f573d6000803e3d6000fd5b505050505b600101612e20565b506001600160a01b0386166000908152609f60205260408120805491829190613054836156d8565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff16815260200186815260200185815250905060006130bc8261156d565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061310a9083908590615a34565b60405180910390a198975050505050505050565b600061312d6020830183614b3f565b6001600160a01b031614156131c75760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b24565b6213c6806131db6060830160408401615bd8565b63ffffffff1611156132905760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b24565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff16906132cc9060608401908401615bd8565b63ffffffff1610156133625760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b24565b6001600160a01b038216600090815260996020526040902081906133868282615c15565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611dee9084906156f3565b606654600090600190811614156133e35760405162461bcd60e51b8152600401610b249061560c565b6133ec85611486565b156134695760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b24565b613472846118e3565b6134f25760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b24565b6001600160a01b038085166000908152609960205260409020600101541680158015906135285750336001600160a01b03821614155b801561353d5750336001600160a01b03861614155b156136aa5742846020015110156135bc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b24565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156136565760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b24565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613697908890889085908890610a36565b90506136a88282876000015161406b565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806137098861209f565b9150915060005b825181101561375f57613757888a85848151811061373057613730615643565b602002602001015185858151811061374a5761374a615643565b60200260200101516138dc565b600101613710565b505050505050505050565b6001600160a01b0381166137f85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b24565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613898908490615b9d565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb493929190615bb4565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613913908490615b85565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb493929190615bb4565b600061396561067887615c78565b6000818152609e602052604090205490915060ff166139da5760405162461bcd60e51b815260206004820152603e6024820152600080516020615d3283398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b24565b609d5443906139ef60a0890160808a01615bd8565b63ffffffff166139ff9190615b85565b1115613a875760405162461bcd60e51b81526020600482015260576024820152600080516020615d3283398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b24565b613a976060870160408801614b3f565b6001600160a01b0316336001600160a01b031614613b1f5760405162461bcd60e51b815260206004820152604b6024820152600080516020615d3283398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b24565b8115613b9657613b3260a0870187615679565b85149050613b965760405162461bcd60e51b815260206004820152603d6024820152600080516020615d3283398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b24565b6000818152609e60205260409020805460ff191690558115613c6c5760005b613bc260a0880188615679565b9050811015613c6657613c5e613bdb6020890189614b3f565b33613be960a08b018b615679565b85818110613bf957613bf9615643565b9050602002016020810190613c0e9190614b3f565b613c1b60c08c018c615679565b86818110613c2b57613c2b615643565b905060200201358a8a87818110613c4457613c44615643565b9050602002016020810190613c599190614b3f565b61449c565b600101613bb5565b50613f84565b336000908152609a60205260408120546001600160a01b0316905b613c9460a0890189615679565b9050811015613f815773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613cbf60a08a018a615679565b83818110613ccf57613ccf615643565b9050602002016020810190613ce49190614b3f565b6001600160a01b03161415613e34576000613d0260208a018a614b3f565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613d4360c08e018e615679565b87818110613d5357613d53615643565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcb9190615a4d565b6001600160a01b038084166000908152609a6020526040902054919250168015613e2c57613e2c8184613e0160a08f018f615679565b88818110613e1157613e11615643565b9050602002016020810190613e269190614b3f565b856138dc565b505050613f79565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613e7160a08c018c615679565b85818110613e8157613e81615643565b9050602002016020810190613e969190614b3f565b613ea360c08d018d615679565b86818110613eb357613eb3615643565b905060200201356040518463ffffffff1660e01b8152600401613ed893929190615bb4565b600060405180830381600087803b158015613ef257600080fd5b505af1158015613f06573d6000803e3d6000fd5b505050506001600160a01b03821615613f7957613f798233613f2b60a08c018c615679565b85818110613f3b57613f3b615643565b9050602002016020810190613f509190614b3f565b613f5d60c08d018d615679565b86818110613f6d57613f6d615643565b905060200201356138dc565b600101613c87565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146119155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b24565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b1561418557604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906140ab9086908690600401615c8a565b602060405180830381865afa1580156140c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ec9190615ce7565b6001600160e01b031916146111275760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b24565b826001600160a01b031661419983836145d5565b6001600160a01b0316146111275760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b24565b6065546001600160a01b031615801561424657506001600160a01b03821615155b6142c85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b24565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26118448261376a565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e081111561445b5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b24565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156145475760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061451090889088908790600401615bb4565b600060405180830381600087803b15801561452a57600080fd5b505af115801561453e573d6000803e3d6000fd5b50505050612a48565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b1580156145c157600080fd5b505af115801561375f573d6000803e3d6000fd5b60008060006145e485856145f9565b915091506145f181614669565b509392505050565b6000808251604114156146305760208301516040840151606085015160001a61462487828585614824565b94509450505050614662565b82516040141561465a576020830151604084015161464f868383614911565b935093505050614662565b506000905060025b9250929050565b600081600481111561467d5761467d614ce5565b14156146865750565b600181600481111561469a5761469a614ce5565b14156146e85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b24565b60028160048111156146fc576146fc614ce5565b141561474a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b24565b600381600481111561475e5761475e614ce5565b14156147b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b24565b60048160048111156147cb576147cb614ce5565b14156110725760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b24565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561485b5750600090506003614908565b8460ff16601b1415801561487357508460ff16601c14155b156148845750600090506004614908565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156148d8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661490157600060019250925050614908565b9150600090505b94509492505050565b6000806001600160ff1b0383168161492e60ff86901c601b615b85565b905061493c87828885614824565b935093505050935093915050565b6001600160a01b038116811461107257600080fd5b803561496a8161494a565b919050565b600080600080600060a0868803121561498757600080fd5b85356149928161494a565b945060208601356149a28161494a565b935060408601356149b28161494a565b94979396509394606081013594506080013592915050565b60008083601f8401126149dc57600080fd5b5081356001600160401b038111156149f357600080fd5b6020830191508360208260051b850101111561466257600080fd5b60008060208385031215614a2157600080fd5b82356001600160401b03811115614a3757600080fd5b614a43858286016149ca565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614a8757835183529284019291840191600101614a6b565b50909695505050505050565b600060608284031215614aa557600080fd5b50919050565b60008083601f840112614abd57600080fd5b5081356001600160401b03811115614ad457600080fd5b60208301915083602082850101111561466257600080fd5b600080600060808486031215614b0157600080fd5b614b0b8585614a93565b925060608401356001600160401b03811115614b2657600080fd5b614b3286828701614aab565b9497909650939450505050565b600060208284031215614b5157600080fd5b8135614b5c8161494a565b9392505050565b600080600060608486031215614b7857600080fd5b8335614b838161494a565b92506020840135614b938161494a565b929592945050506040919091013590565b600060208284031215614bb657600080fd5b5035919050565b6000806000806000806000806080898b031215614bd957600080fd5b88356001600160401b0380821115614bf057600080fd5b614bfc8c838d016149ca565b909a50985060208b0135915080821115614c1557600080fd5b614c218c838d016149ca565b909850965060408b0135915080821115614c3a57600080fd5b614c468c838d016149ca565b909650945060608b0135915080821115614c5f57600080fd5b50614c6c8b828c016149ca565b999c989b5096995094979396929594505050565b60008060408385031215614c9357600080fd5b8235614c9e8161494a565b946020939093013593505050565b60008060408385031215614cbf57600080fd5b8235614cca8161494a565b91506020830135614cda8161494a565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614d1d57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614d5b57614d5b614d23565b60405290565b604080519081016001600160401b0381118282101715614d5b57614d5b614d23565b60405160c081016001600160401b0381118282101715614d5b57614d5b614d23565b604051601f8201601f191681016001600160401b0381118282101715614dcd57614dcd614d23565b604052919050565b63ffffffff8116811461107257600080fd5b803561496a81614dd5565b60006001600160401b03821115614e0b57614e0b614d23565b5060051b60200190565b600082601f830112614e2657600080fd5b81356020614e3b614e3683614df2565b614da5565b82815260059290921b84018101918181019086841115614e5a57600080fd5b8286015b84811015614e7e578035614e718161494a565b8352918301918301614e5e565b509695505050505050565b600082601f830112614e9a57600080fd5b81356020614eaa614e3683614df2565b82815260059290921b84018101918181019086841115614ec957600080fd5b8286015b84811015614e7e5780358352918301918301614ecd565b600060e08284031215614ef657600080fd5b614efe614d39565b9050614f098261495f565b8152614f176020830161495f565b6020820152614f286040830161495f565b604082015260608201356060820152614f4360808301614de7565b608082015260a08201356001600160401b0380821115614f6257600080fd5b614f6e85838601614e15565b60a084015260c0840135915080821115614f8757600080fd5b50614f9484828501614e89565b60c08301525092915050565b600060208284031215614fb257600080fd5b81356001600160401b03811115614fc857600080fd5b614fd484828501614ee4565b949350505050565b600060208284031215614fee57600080fd5b813560ff81168114614b5c57600080fd5b60006040828403121561501157600080fd5b615019614d61565b905081356150268161494a565b815260208201356bffffffffffffffffffffffff8116811461504757600080fd5b602082015292915050565b6000602080838503121561506557600080fd5b82356001600160401b038082111561507c57600080fd5b818501915085601f83011261509057600080fd5b813561509e614e3682614df2565b81815260059190911b830184019084810190888311156150bd57600080fd5b8585015b83811015615197578035858111156150d95760008081fd5b860160e0818c03601f19018113156150f15760008081fd5b6150f9614d83565b898301358881111561510b5760008081fd5b6151198e8c83870101614e15565b825250604080840135898111156151305760008081fd5b61513e8f8d83880101614e89565b8c84015250606061515081860161495f565b82840152608091506151648f838701614fff565b9083015261517460c08501614de7565b9082015261518383830161495f565b60a0820152855250509186019186016150c1565b5098975050505050505050565b801515811461107257600080fd5b6000806000806000608086880312156151ca57600080fd5b85356001600160401b03808211156151e157600080fd5b9087019060e0828a0312156151f557600080fd5b9095506020870135908082111561520b57600080fd5b50615218888289016149ca565b909550935050604086013591506060860135615233816151a4565b809150509295509295909350565b600082601f83011261525257600080fd5b81356001600160401b0381111561526b5761526b614d23565b61527e601f8201601f1916602001614da5565b81815284602083860101111561529357600080fd5b816020850160208301376000918101602001919091529392505050565b6000604082840312156152c257600080fd5b6152ca614d61565b905081356001600160401b038111156152e257600080fd5b6152ee84828501615241565b8252506020820135602082015292915050565b600080600080600060a0868803121561531957600080fd5b85356153248161494a565b945060208601356153348161494a565b935060408601356001600160401b038082111561535057600080fd5b61535c89838a016152b0565b9450606088013591508082111561537257600080fd5b5061537f888289016152b0565b95989497509295608001359392505050565b600080604083850312156153a457600080fd5b82356153af8161494a565b915060208301356001600160401b03808211156153cb57600080fd5b90840190606082870312156153df57600080fd5b6040516060810181811083821117156153fa576153fa614d23565b60405282358281111561540c57600080fd5b61541888828601615241565b82525060208301356020820152604083013560408201528093505050509250929050565b6000806020838503121561544f57600080fd5b82356001600160401b0381111561546557600080fd5b614a4385828601614aab565b6000806000806080858703121561548757600080fd5b84356154928161494a565b935060208501356154a28161494a565b93969395505050506040820135916060013590565b600080600080608085870312156154cd57600080fd5b84356154d88161494a565b93506020850135925060408501356154ef8161494a565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155385781516001600160a01b031687529582019590820190600101615513565b509495945050505050565b600081518084526020808501945080840160005b8381101561553857815187529582019590820190600101615557565b60408152600061558660408301856154ff565b82810360208401526112908185615543565b6000806000606084860312156155ad57600080fd5b83356155b88161494a565b925060208401356001600160401b038111156155d357600080fd5b6155df868287016152b0565b925050604084013590509250925092565b60006060828403121561560257600080fd5b614b5c8383614a93565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261566f57600080fd5b9190910192915050565b6000808335601e1984360301811261569057600080fd5b8301803591506001600160401b038211156156aa57600080fd5b6020019150600581901b360382131561466257600080fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156156ec576156ec6156c2565b5060010190565b6060810182356157028161494a565b6001600160a01b03908116835260208401359061571e8261494a565b166020830152604083013561573281614dd5565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561578657600080fd5b8151614b5c8161494a565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561584a57600080fd5b8151614b5c816151a4565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261566f57600080fd5b6000602082840312156158c557600080fd5b8135614b5c816151a4565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261592b60e08501826154ff565b905060c083015184820360c08601526112908282615543565b602081526000614b5c60208301846158d0565b602081526000825160e060208401526159746101008401826154ff565b90506020840151601f198483030160408501526159918282615543565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a08501525060808401516159e960c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b60008060408385031215615a1957600080fd5b8251615a24816151a4565b6020939093015192949293505050565b828152604060208201526000614fd460408301846158d0565b600060208284031215615a5f57600080fd5b5051919050565b600082601f830112615a7757600080fd5b81516020615a87614e3683614df2565b82815260059290921b84018101918181019086841115615aa657600080fd5b8286015b84811015614e7e5780518352918301918301615aaa565b60008060408385031215615ad457600080fd5b82516001600160401b0380821115615aeb57600080fd5b818501915085601f830112615aff57600080fd5b81516020615b0f614e3683614df2565b82815260059290921b84018101918181019089841115615b2e57600080fd5b948201945b83861015615b55578551615b468161494a565b82529482019490820190615b33565b91880151919650909350505080821115615b6e57600080fd5b50615b7b85828601615a66565b9150509250929050565b60008219821115615b9857615b986156c2565b500190565b600082821015615baf57615baf6156c2565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bea57600080fd5b8135614b5c81614dd5565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615c208161494a565b615c2a8183615bf5565b50600181016020830135615c3d8161494a565b615c478183615bf5565b506040830135615c5681614dd5565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615c843683614ee4565b92915050565b82815260006020604081840152835180604085015260005b81811015615cbe57858101830151858201606001528201615ca2565b81811115615cd0576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615cf957600080fd5b81516001600160e01b031981168114614b5c57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a264697066735822122097095879f66142871d04737f534857e5a07859c3e4cc5dcba56dd8b453f3161664736f6c634300080c0033", +} + +// ContractDelegationManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractDelegationManagerMetaData.ABI instead. +var ContractDelegationManagerABI = ContractDelegationManagerMetaData.ABI + +// ContractDelegationManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ContractDelegationManagerMetaData.Bin instead. +var ContractDelegationManagerBin = ContractDelegationManagerMetaData.Bin + +// DeployContractDelegationManager deploys a new Ethereum contract, binding an instance of ContractDelegationManager to it. +func DeployContractDelegationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _slasher common.Address, _eigenPodManager common.Address) (common.Address, *types.Transaction, *ContractDelegationManager, error) { + parsed, err := ContractDelegationManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractDelegationManagerBin), backend, _strategyManager, _slasher, _eigenPodManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ContractDelegationManager{ContractDelegationManagerCaller: ContractDelegationManagerCaller{contract: contract}, ContractDelegationManagerTransactor: ContractDelegationManagerTransactor{contract: contract}, ContractDelegationManagerFilterer: ContractDelegationManagerFilterer{contract: contract}}, nil +} + +// ContractDelegationManager is an auto generated Go binding around an Ethereum contract. +type ContractDelegationManager struct { + ContractDelegationManagerCaller // Read-only binding to the contract + ContractDelegationManagerTransactor // Write-only binding to the contract + ContractDelegationManagerFilterer // Log filterer for contract events +} + +// ContractDelegationManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractDelegationManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractDelegationManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractDelegationManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractDelegationManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractDelegationManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractDelegationManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractDelegationManagerSession struct { + Contract *ContractDelegationManager // 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 +} + +// ContractDelegationManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractDelegationManagerCallerSession struct { + Contract *ContractDelegationManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractDelegationManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractDelegationManagerTransactorSession struct { + Contract *ContractDelegationManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractDelegationManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractDelegationManagerRaw struct { + Contract *ContractDelegationManager // Generic contract binding to access the raw methods on +} + +// ContractDelegationManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractDelegationManagerCallerRaw struct { + Contract *ContractDelegationManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractDelegationManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractDelegationManagerTransactorRaw struct { + Contract *ContractDelegationManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractDelegationManager creates a new instance of ContractDelegationManager, bound to a specific deployed contract. +func NewContractDelegationManager(address common.Address, backend bind.ContractBackend) (*ContractDelegationManager, error) { + contract, err := bindContractDelegationManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractDelegationManager{ContractDelegationManagerCaller: ContractDelegationManagerCaller{contract: contract}, ContractDelegationManagerTransactor: ContractDelegationManagerTransactor{contract: contract}, ContractDelegationManagerFilterer: ContractDelegationManagerFilterer{contract: contract}}, nil +} + +// NewContractDelegationManagerCaller creates a new read-only instance of ContractDelegationManager, bound to a specific deployed contract. +func NewContractDelegationManagerCaller(address common.Address, caller bind.ContractCaller) (*ContractDelegationManagerCaller, error) { + contract, err := bindContractDelegationManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractDelegationManagerCaller{contract: contract}, nil +} + +// NewContractDelegationManagerTransactor creates a new write-only instance of ContractDelegationManager, bound to a specific deployed contract. +func NewContractDelegationManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractDelegationManagerTransactor, error) { + contract, err := bindContractDelegationManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractDelegationManagerTransactor{contract: contract}, nil +} + +// NewContractDelegationManagerFilterer creates a new log filterer instance of ContractDelegationManager, bound to a specific deployed contract. +func NewContractDelegationManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractDelegationManagerFilterer, error) { + contract, err := bindContractDelegationManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractDelegationManagerFilterer{contract: contract}, nil +} + +// bindContractDelegationManager binds a generic wrapper to an already deployed contract. +func bindContractDelegationManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractDelegationManagerMetaData.GetAbi() + 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 (_ContractDelegationManager *ContractDelegationManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractDelegationManager.Contract.ContractDelegationManagerCaller.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 (_ContractDelegationManager *ContractDelegationManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.ContractDelegationManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractDelegationManager *ContractDelegationManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.ContractDelegationManagerTransactor.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 (_ContractDelegationManager *ContractDelegationManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractDelegationManager.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 (_ContractDelegationManager *ContractDelegationManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractDelegationManager *ContractDelegationManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.contract.Transact(opts, method, params...) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) DELEGATIONAPPROVALTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "DELEGATION_APPROVAL_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "DOMAIN_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.DOMAINTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.DOMAINTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61. +// +// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) MAXSTAKEROPTOUTWINDOWBLOCKS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61. +// +// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) MAXSTAKEROPTOUTWINDOWBLOCKS() (*big.Int, error) { + return _ContractDelegationManager.Contract.MAXSTAKEROPTOUTWINDOWBLOCKS(&_ContractDelegationManager.CallOpts) +} + +// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61. +// +// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) MAXSTAKEROPTOUTWINDOWBLOCKS() (*big.Int, error) { + return _ContractDelegationManager.Contract.MAXSTAKEROPTOUTWINDOWBLOCKS(&_ContractDelegationManager.CallOpts) +} + +// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// +// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) MAXWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "MAX_WITHDRAWAL_DELAY_BLOCKS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// +// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) { + return _ContractDelegationManager.Contract.MAXWITHDRAWALDELAYBLOCKS(&_ContractDelegationManager.CallOpts) +} + +// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// +// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) { + return _ContractDelegationManager.Contract.MAXWITHDRAWALDELAYBLOCKS(&_ContractDelegationManager.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "OPERATOR_AVS_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382. +// +// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) STAKERDELEGATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "STAKER_DELEGATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382. +// +// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382. +// +// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) { + return _ContractDelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_ContractDelegationManager.CallOpts) +} + +// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3. +// +// Solidity: function avsOperatorStatus(address , address ) view returns(uint8) +func (_ContractDelegationManager *ContractDelegationManagerCaller) AvsOperatorStatus(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (uint8, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "avsOperatorStatus", arg0, arg1) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3. +// +// Solidity: function avsOperatorStatus(address , address ) view returns(uint8) +func (_ContractDelegationManager *ContractDelegationManagerSession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) { + return _ContractDelegationManager.Contract.AvsOperatorStatus(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3. +// +// Solidity: function avsOperatorStatus(address , address ) view returns(uint8) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) { + return _ContractDelegationManager.Contract.AvsOperatorStatus(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "beaconChainETHStrategy") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) BeaconChainETHStrategy() (common.Address, error) { + return _ContractDelegationManager.Contract.BeaconChainETHStrategy(&_ContractDelegationManager.CallOpts) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) BeaconChainETHStrategy() (common.Address, error) { + return _ContractDelegationManager.Contract.BeaconChainETHStrategy(&_ContractDelegationManager.CallOpts) +} + +// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091. +// +// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateCurrentStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateCurrentStakerDelegationDigestHash", staker, operator, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091. +// +// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateCurrentStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, expiry) +} + +// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091. +// +// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateCurrentStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, expiry) +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, _delegationApprover, approverSalt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateOperatorAVSRegistrationDigestHash(opts *bind.CallOpts, operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateOperatorAVSRegistrationDigestHash", operator, avs, salt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateOperatorAVSRegistrationDigestHash(&_ContractDelegationManager.CallOpts, operator, avs, salt, expiry) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateOperatorAVSRegistrationDigestHash(&_ContractDelegationManager.CallOpts, operator, avs, salt, expiry) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, _stakerNonce, operator, expiry) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, _stakerNonce, operator, expiry) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateWithdrawalRoot(&_ContractDelegationManager.CallOpts, withdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateWithdrawalRoot(&_ContractDelegationManager.CallOpts, withdrawal) +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CumulativeWithdrawalsQueued(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.CumulativeWithdrawalsQueued(&_ContractDelegationManager.CallOpts, arg0) +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.CumulativeWithdrawalsQueued(&_ContractDelegationManager.CallOpts, arg0) +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address ) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) DelegatedTo(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "delegatedTo", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address ) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) DelegatedTo(arg0 common.Address) (common.Address, error) { + return _ContractDelegationManager.Contract.DelegatedTo(&_ContractDelegationManager.CallOpts, arg0) +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address ) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DelegatedTo(arg0 common.Address) (common.Address, error) { + return _ContractDelegationManager.Contract.DelegatedTo(&_ContractDelegationManager.CallOpts, arg0) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) DelegationApprover(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "delegationApprover", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _ContractDelegationManager.Contract.DelegationApprover(&_ContractDelegationManager.CallOpts, operator) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _ContractDelegationManager.Contract.DelegationApprover(&_ContractDelegationManager.CallOpts, operator) +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCaller) DelegationApproverSaltIsSpent(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "delegationApproverSaltIsSpent", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _ContractDelegationManager.Contract.DelegationApproverSaltIsSpent(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _ContractDelegationManager.Contract.DelegationApproverSaltIsSpent(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "domainSeparator") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) DomainSeparator() ([32]byte, error) { + return _ContractDelegationManager.Contract.DomainSeparator(&_ContractDelegationManager.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DomainSeparator() ([32]byte, error) { + return _ContractDelegationManager.Contract.DomainSeparator(&_ContractDelegationManager.CallOpts) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) EarningsReceiver(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "earningsReceiver", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _ContractDelegationManager.Contract.EarningsReceiver(&_ContractDelegationManager.CallOpts, operator) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _ContractDelegationManager.Contract.EarningsReceiver(&_ContractDelegationManager.CallOpts, operator) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) EigenPodManager() (common.Address, error) { + return _ContractDelegationManager.Contract.EigenPodManager(&_ContractDelegationManager.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) EigenPodManager() (common.Address, error) { + return _ContractDelegationManager.Contract.EigenPodManager(&_ContractDelegationManager.CallOpts) +} + +// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// +// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) +func (_ContractDelegationManager *ContractDelegationManagerCaller) GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "getDelegatableShares", staker) + + if err != nil { + return *new([]common.Address), *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return out0, out1, err + +} + +// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// +// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) +func (_ContractDelegationManager *ContractDelegationManagerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) { + return _ContractDelegationManager.Contract.GetDelegatableShares(&_ContractDelegationManager.CallOpts, staker) +} + +// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// +// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) { + return _ContractDelegationManager.Contract.GetDelegatableShares(&_ContractDelegationManager.CallOpts, staker) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCaller) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "isDelegated", staker) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerSession) IsDelegated(staker common.Address) (bool, error) { + return _ContractDelegationManager.Contract.IsDelegated(&_ContractDelegationManager.CallOpts, staker) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) IsDelegated(staker common.Address) (bool, error) { + return _ContractDelegationManager.Contract.IsDelegated(&_ContractDelegationManager.CallOpts, staker) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCaller) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "isOperator", operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerSession) IsOperator(operator common.Address) (bool, error) { + return _ContractDelegationManager.Contract.IsOperator(&_ContractDelegationManager.CallOpts, operator) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) IsOperator(operator common.Address) (bool, error) { + return _ContractDelegationManager.Contract.IsOperator(&_ContractDelegationManager.CallOpts, operator) +} + +// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. +// +// Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) +func (_ContractDelegationManager *ContractDelegationManagerCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "operatorDetails", operator) + + if err != nil { + return *new(IDelegationManagerOperatorDetails), err + } + + out0 := *abi.ConvertType(out[0], new(IDelegationManagerOperatorDetails)).(*IDelegationManagerOperatorDetails) + + return out0, err + +} + +// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. +// +// Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) +func (_ContractDelegationManager *ContractDelegationManagerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { + return _ContractDelegationManager.Contract.OperatorDetails(&_ContractDelegationManager.CallOpts, operator) +} + +// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. +// +// Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { + return _ContractDelegationManager.Contract.OperatorDetails(&_ContractDelegationManager.CallOpts, operator) +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCaller) OperatorSaltIsSpent(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "operatorSaltIsSpent", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerSession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _ContractDelegationManager.Contract.OperatorSaltIsSpent(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _ContractDelegationManager.Contract.OperatorSaltIsSpent(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address , address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) OperatorShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "operatorShares", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address , address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.OperatorShares(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address , address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.OperatorShares(&_ContractDelegationManager.CallOpts, arg0, arg1) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) Owner() (common.Address, error) { + return _ContractDelegationManager.Contract.Owner(&_ContractDelegationManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Owner() (common.Address, error) { + return _ContractDelegationManager.Contract.Owner(&_ContractDelegationManager.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "paused", index) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerSession) Paused(index uint8) (bool, error) { + return _ContractDelegationManager.Contract.Paused(&_ContractDelegationManager.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Paused(index uint8) (bool, error) { + return _ContractDelegationManager.Contract.Paused(&_ContractDelegationManager.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "paused0") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) Paused0() (*big.Int, error) { + return _ContractDelegationManager.Contract.Paused0(&_ContractDelegationManager.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Paused0() (*big.Int, error) { + return _ContractDelegationManager.Contract.Paused0(&_ContractDelegationManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "pauserRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) PauserRegistry() (common.Address, error) { + return _ContractDelegationManager.Contract.PauserRegistry(&_ContractDelegationManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) PauserRegistry() (common.Address, error) { + return _ContractDelegationManager.Contract.PauserRegistry(&_ContractDelegationManager.CallOpts) +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCaller) PendingWithdrawals(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "pendingWithdrawals", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) { + return _ContractDelegationManager.Contract.PendingWithdrawals(&_ContractDelegationManager.CallOpts, arg0) +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) { + return _ContractDelegationManager.Contract.PendingWithdrawals(&_ContractDelegationManager.CallOpts, arg0) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) Slasher() (common.Address, error) { + return _ContractDelegationManager.Contract.Slasher(&_ContractDelegationManager.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Slasher() (common.Address, error) { + return _ContractDelegationManager.Contract.Slasher(&_ContractDelegationManager.CallOpts) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) StakerNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "stakerNonce", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) StakerNonce(arg0 common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.StakerNonce(&_ContractDelegationManager.CallOpts, arg0) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) StakerNonce(arg0 common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.StakerNonce(&_ContractDelegationManager.CallOpts, arg0) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.StakerOptOutWindowBlocks(&_ContractDelegationManager.CallOpts, operator) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.StakerOptOutWindowBlocks(&_ContractDelegationManager.CallOpts, operator) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "strategyManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) StrategyManager() (common.Address, error) { + return _ContractDelegationManager.Contract.StrategyManager(&_ContractDelegationManager.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) StrategyManager() (common.Address, error) { + return _ContractDelegationManager.Contract.StrategyManager(&_ContractDelegationManager.CallOpts) +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) WithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "withdrawalDelayBlocks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) WithdrawalDelayBlocks() (*big.Int, error) { + return _ContractDelegationManager.Contract.WithdrawalDelayBlocks(&_ContractDelegationManager.CallOpts) +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) WithdrawalDelayBlocks() (*big.Int, error) { + return _ContractDelegationManager.Contract.WithdrawalDelayBlocks(&_ContractDelegationManager.CallOpts) +} + +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// +// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, middlewareTimesIndex, receiveAsTokens) +} + +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// +// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens) +} + +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// +// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens) +} + +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396. +// +// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens) +} + +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396. +// +// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens) +} + +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396. +// +// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, strategy, shares) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DecreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DecreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) DelegateTo(opts *bind.TransactOpts, operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "delegateTo", operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DelegateTo(&_ContractDelegationManager.TransactOpts, operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DelegateTo(&_ContractDelegationManager.TransactOpts, operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071. +// +// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) DelegateToBySignature(opts *bind.TransactOpts, staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "delegateToBySignature", staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt) +} + +// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071. +// +// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DelegateToBySignature(&_ContractDelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt) +} + +// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071. +// +// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DelegateToBySignature(&_ContractDelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "deregisterOperatorFromAVS", operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DeregisterOperatorFromAVS(&_ContractDelegationManager.TransactOpts, operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DeregisterOperatorFromAVS(&_ContractDelegationManager.TransactOpts, operator) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, shares) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +} + +// Initialize is a paid mutator transaction binding the contract method 0xeb990c59. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _withdrawalDelayBlocks) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _withdrawalDelayBlocks *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus, _withdrawalDelayBlocks) +} + +// Initialize is a paid mutator transaction binding the contract method 0xeb990c59. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _withdrawalDelayBlocks) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _withdrawalDelayBlocks *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _withdrawalDelayBlocks) +} + +// Initialize is a paid mutator transaction binding the contract method 0xeb990c59. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _withdrawalDelayBlocks) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _withdrawalDelayBlocks *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _withdrawalDelayBlocks) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToMigrate) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) MigrateQueuedWithdrawals(opts *bind.TransactOpts, withdrawalsToMigrate []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "migrateQueuedWithdrawals", withdrawalsToMigrate) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToMigrate) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) MigrateQueuedWithdrawals(withdrawalsToMigrate []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.MigrateQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawalsToMigrate) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToMigrate) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) MigrateQueuedWithdrawals(withdrawalsToMigrate []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.MigrateQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawalsToMigrate) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "modifyOperatorDetails", newOperatorDetails) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, newOperatorDetails) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, newOperatorDetails) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Pause(&_ContractDelegationManager.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Pause(&_ContractDelegationManager.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) PauseAll() (*types.Transaction, error) { + return _ContractDelegationManager.Contract.PauseAll(&_ContractDelegationManager.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) PauseAll() (*types.Transaction, error) { + return _ContractDelegationManager.Contract.PauseAll(&_ContractDelegationManager.TransactOpts) +} + +// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02. +// +// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[]) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "queueWithdrawals", queuedWithdrawalParams) +} + +// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02. +// +// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[]) +func (_ContractDelegationManager *ContractDelegationManagerSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, queuedWithdrawalParams) +} + +// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02. +// +// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[]) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, queuedWithdrawalParams) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "registerAsOperator", registeringOperatorDetails, metadataURI) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, registeringOperatorDetails, metadataURI) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, registeringOperatorDetails, metadataURI) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RegisterOperatorToAVS(&_ContractDelegationManager.TransactOpts, operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RegisterOperatorToAVS(&_ContractDelegationManager.TransactOpts, operator, operatorSignature) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RenounceOwnership(&_ContractDelegationManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RenounceOwnership(&_ContractDelegationManager.TransactOpts) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "setPauserRegistry", newPauserRegistry) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.SetPauserRegistry(&_ContractDelegationManager.TransactOpts, newPauserRegistry) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.SetPauserRegistry(&_ContractDelegationManager.TransactOpts, newPauserRegistry) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.TransferOwnership(&_ContractDelegationManager.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.TransferOwnership(&_ContractDelegationManager.TransactOpts, newOwner) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) Undelegate(opts *bind.TransactOpts, staker common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "undelegate", staker) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots) +func (_ContractDelegationManager *ContractDelegationManagerSession) Undelegate(staker common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Undelegate(&_ContractDelegationManager.TransactOpts, staker) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Undelegate(staker common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Undelegate(&_ContractDelegationManager.TransactOpts, staker) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Unpause(&_ContractDelegationManager.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Unpause(&_ContractDelegationManager.TransactOpts, newPausedStatus) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "updateAVSMetadataURI", metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.UpdateAVSMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.UpdateAVSMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "updateOperatorMetadataURI", metadataURI) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) +} + +// ContractDelegationManagerAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerAVSMetadataURIUpdatedIterator struct { + Event *ContractDelegationManagerAVSMetadataURIUpdated // 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 *ContractDelegationManagerAVSMetadataURIUpdatedIterator) 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(ContractDelegationManagerAVSMetadataURIUpdated) + 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(ContractDelegationManagerAVSMetadataURIUpdated) + 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 *ContractDelegationManagerAVSMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerAVSMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerAVSMetadataURIUpdated struct { + Avs common.Address + MetadataURI string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAVSMetadataURIUpdated is a free log retrieval operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713. +// +// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*ContractDelegationManagerAVSMetadataURIUpdatedIterator, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerAVSMetadataURIUpdatedIterator{contract: _ContractDelegationManager.contract, event: "AVSMetadataURIUpdated", logs: logs, sub: sub}, nil +} + +// WatchAVSMetadataURIUpdated is a free log subscription operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713. +// +// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "AVSMetadataURIUpdated", avsRule) + 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(ContractDelegationManagerAVSMetadataURIUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "AVSMetadataURIUpdated", 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 +} + +// ParseAVSMetadataURIUpdated is a log parse operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713. +// +// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*ContractDelegationManagerAVSMetadataURIUpdated, error) { + event := new(ContractDelegationManagerAVSMetadataURIUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractDelegationManager contract. +type ContractDelegationManagerInitializedIterator struct { + Event *ContractDelegationManagerInitialized // 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 *ContractDelegationManagerInitializedIterator) 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(ContractDelegationManagerInitialized) + 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(ContractDelegationManagerInitialized) + 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 *ContractDelegationManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerInitialized represents a Initialized event raised by the ContractDelegationManager contract. +type ContractDelegationManagerInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractDelegationManagerInitializedIterator, error) { + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContractDelegationManagerInitializedIterator{contract: _ContractDelegationManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Initialized") + 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(ContractDelegationManagerInitialized) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseInitialized(log types.Log) (*ContractDelegationManagerInitialized, error) { + event := new(ContractDelegationManagerInitialized) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator struct { + Event *ContractDelegationManagerOperatorAVSRegistrationStatusUpdated // 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 *ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator) 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(ContractDelegationManagerOperatorAVSRegistrationStatusUpdated) + 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(ContractDelegationManagerOperatorAVSRegistrationStatusUpdated) + 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 *ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorAVSRegistrationStatusUpdated struct { + Operator common.Address + Avs common.Address + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorAVSRegistrationStatusUpdatedIterator{contract: _ContractDelegationManager.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + 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(ContractDelegationManagerOperatorAVSRegistrationStatusUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", 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 +} + +// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*ContractDelegationManagerOperatorAVSRegistrationStatusUpdated, error) { + event := new(ContractDelegationManagerOperatorAVSRegistrationStatusUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorDetailsModifiedIterator is returned from FilterOperatorDetailsModified and is used to iterate over the raw logs and unpacked data for OperatorDetailsModified events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorDetailsModifiedIterator struct { + Event *ContractDelegationManagerOperatorDetailsModified // 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 *ContractDelegationManagerOperatorDetailsModifiedIterator) 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(ContractDelegationManagerOperatorDetailsModified) + 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(ContractDelegationManagerOperatorDetailsModified) + 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 *ContractDelegationManagerOperatorDetailsModifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorDetailsModified represents a OperatorDetailsModified event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorDetailsModified struct { + Operator common.Address + NewOperatorDetails IDelegationManagerOperatorDetails + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorDetailsModifiedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorDetailsModifiedIterator{contract: _ContractDelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil +} + +// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorDetailsModified, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule) + 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(ContractDelegationManagerOperatorDetailsModified) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", 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 +} + +// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorDetailsModified(log types.Log) (*ContractDelegationManagerOperatorDetailsModified, error) { + event := new(ContractDelegationManagerOperatorDetailsModified) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorMetadataURIUpdatedIterator is returned from FilterOperatorMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for OperatorMetadataURIUpdated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorMetadataURIUpdatedIterator struct { + Event *ContractDelegationManagerOperatorMetadataURIUpdated // 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 *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) 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(ContractDelegationManagerOperatorMetadataURIUpdated) + 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(ContractDelegationManagerOperatorMetadataURIUpdated) + 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 *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorMetadataURIUpdated represents a OperatorMetadataURIUpdated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorMetadataURIUpdated struct { + Operator common.Address + MetadataURI string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorMetadataURIUpdated is a free log retrieval operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorMetadataURIUpdated(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorMetadataURIUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorMetadataURIUpdatedIterator{contract: _ContractDelegationManager.contract, event: "OperatorMetadataURIUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorMetadataURIUpdated is a free log subscription operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorMetadataURIUpdated, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + 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(ContractDelegationManagerOperatorMetadataURIUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", 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 +} + +// ParseOperatorMetadataURIUpdated is a log parse operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorMetadataURIUpdated(log types.Log) (*ContractDelegationManagerOperatorMetadataURIUpdated, error) { + event := new(ContractDelegationManagerOperatorMetadataURIUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorRegisteredIterator struct { + Event *ContractDelegationManagerOperatorRegistered // 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 *ContractDelegationManagerOperatorRegisteredIterator) 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(ContractDelegationManagerOperatorRegistered) + 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(ContractDelegationManagerOperatorRegistered) + 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 *ContractDelegationManagerOperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorRegistered represents a OperatorRegistered event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorRegistered struct { + Operator common.Address + OperatorDetails IDelegationManagerOperatorDetails + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorRegisteredIterator{contract: _ContractDelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + 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(ContractDelegationManagerOperatorRegistered) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorRegistered", 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 +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorRegistered(log types.Log) (*ContractDelegationManagerOperatorRegistered, error) { + event := new(ContractDelegationManagerOperatorRegistered) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorSharesDecreasedIterator is returned from FilterOperatorSharesDecreased and is used to iterate over the raw logs and unpacked data for OperatorSharesDecreased events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorSharesDecreasedIterator struct { + Event *ContractDelegationManagerOperatorSharesDecreased // 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 *ContractDelegationManagerOperatorSharesDecreasedIterator) 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(ContractDelegationManagerOperatorSharesDecreased) + 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(ContractDelegationManagerOperatorSharesDecreased) + 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 *ContractDelegationManagerOperatorSharesDecreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorSharesDecreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorSharesDecreased represents a OperatorSharesDecreased event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorSharesDecreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesDecreased is a free log retrieval operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorSharesDecreased(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorSharesDecreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorSharesDecreasedIterator{contract: _ContractDelegationManager.contract, event: "OperatorSharesDecreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesDecreased is a free log subscription operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorSharesDecreased(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorSharesDecreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorSharesDecreased", operatorRule) + 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(ContractDelegationManagerOperatorSharesDecreased) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorSharesDecreased", 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 +} + +// ParseOperatorSharesDecreased is a log parse operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorSharesDecreased(log types.Log) (*ContractDelegationManagerOperatorSharesDecreased, error) { + event := new(ContractDelegationManagerOperatorSharesDecreased) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorSharesIncreasedIterator is returned from FilterOperatorSharesIncreased and is used to iterate over the raw logs and unpacked data for OperatorSharesIncreased events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorSharesIncreasedIterator struct { + Event *ContractDelegationManagerOperatorSharesIncreased // 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 *ContractDelegationManagerOperatorSharesIncreasedIterator) 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(ContractDelegationManagerOperatorSharesIncreased) + 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(ContractDelegationManagerOperatorSharesIncreased) + 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 *ContractDelegationManagerOperatorSharesIncreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorSharesIncreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorSharesIncreased represents a OperatorSharesIncreased event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorSharesIncreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesIncreased is a free log retrieval operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorSharesIncreased(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorSharesIncreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorSharesIncreasedIterator{contract: _ContractDelegationManager.contract, event: "OperatorSharesIncreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesIncreased is a free log subscription operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorSharesIncreased(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorSharesIncreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorSharesIncreased", operatorRule) + 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(ContractDelegationManagerOperatorSharesIncreased) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorSharesIncreased", 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 +} + +// ParseOperatorSharesIncreased is a log parse operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorSharesIncreased(log types.Log) (*ContractDelegationManagerOperatorSharesIncreased, error) { + event := new(ContractDelegationManagerOperatorSharesIncreased) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOwnershipTransferredIterator struct { + Event *ContractDelegationManagerOwnershipTransferred // 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 *ContractDelegationManagerOwnershipTransferredIterator) 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(ContractDelegationManagerOwnershipTransferred) + 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(ContractDelegationManagerOwnershipTransferred) + 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 *ContractDelegationManagerOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOwnershipTransferred represents a OwnershipTransferred event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ContractDelegationManagerOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOwnershipTransferredIterator{contract: _ContractDelegationManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + 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(ContractDelegationManagerOwnershipTransferred) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OwnershipTransferred", 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 +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOwnershipTransferred(log types.Log) (*ContractDelegationManagerOwnershipTransferred, error) { + event := new(ContractDelegationManagerOwnershipTransferred) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ContractDelegationManager contract. +type ContractDelegationManagerPausedIterator struct { + Event *ContractDelegationManagerPaused // 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 *ContractDelegationManagerPausedIterator) 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(ContractDelegationManagerPaused) + 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(ContractDelegationManagerPaused) + 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 *ContractDelegationManagerPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerPaused represents a Paused event raised by the ContractDelegationManager contract. +type ContractDelegationManagerPaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*ContractDelegationManagerPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerPausedIterator{contract: _ContractDelegationManager.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Paused", accountRule) + 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(ContractDelegationManagerPaused) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Paused", 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 +} + +// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParsePaused(log types.Log) (*ContractDelegationManagerPaused, error) { + event := new(ContractDelegationManagerPaused) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the ContractDelegationManager contract. +type ContractDelegationManagerPauserRegistrySetIterator struct { + Event *ContractDelegationManagerPauserRegistrySet // 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 *ContractDelegationManagerPauserRegistrySetIterator) 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(ContractDelegationManagerPauserRegistrySet) + 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(ContractDelegationManagerPauserRegistrySet) + 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 *ContractDelegationManagerPauserRegistrySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerPauserRegistrySetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerPauserRegistrySet represents a PauserRegistrySet event raised by the ContractDelegationManager contract. +type ContractDelegationManagerPauserRegistrySet struct { + PauserRegistry common.Address + NewPauserRegistry common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*ContractDelegationManagerPauserRegistrySetIterator, error) { + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "PauserRegistrySet") + if err != nil { + return nil, err + } + return &ContractDelegationManagerPauserRegistrySetIterator{contract: _ContractDelegationManager.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil +} + +// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerPauserRegistrySet) (event.Subscription, error) { + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "PauserRegistrySet") + 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(ContractDelegationManagerPauserRegistrySet) + if err := _ContractDelegationManager.contract.UnpackLog(event, "PauserRegistrySet", 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 +} + +// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParsePauserRegistrySet(log types.Log) (*ContractDelegationManagerPauserRegistrySet, error) { + event := new(ContractDelegationManagerPauserRegistrySet) + if err := _ContractDelegationManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerDelegatedIterator struct { + Event *ContractDelegationManagerStakerDelegated // 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 *ContractDelegationManagerStakerDelegatedIterator) 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(ContractDelegationManagerStakerDelegated) + 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(ContractDelegationManagerStakerDelegated) + 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 *ContractDelegationManagerStakerDelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerStakerDelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerStakerDelegated represents a StakerDelegated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerDelegated struct { + Staker common.Address + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerDelegatedIterator, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerStakerDelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule) + 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(ContractDelegationManagerStakerDelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerDelegated", 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 +} + +// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*ContractDelegationManagerStakerDelegated, error) { + event := new(ContractDelegationManagerStakerDelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerForceUndelegatedIterator struct { + Event *ContractDelegationManagerStakerForceUndelegated // 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 *ContractDelegationManagerStakerForceUndelegatedIterator) 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(ContractDelegationManagerStakerForceUndelegated) + 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(ContractDelegationManagerStakerForceUndelegated) + 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 *ContractDelegationManagerStakerForceUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerForceUndelegated struct { + Staker common.Address + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerForceUndelegatedIterator, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerStakerForceUndelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + 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(ContractDelegationManagerStakerForceUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", 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 +} + +// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*ContractDelegationManagerStakerForceUndelegated, error) { + event := new(ContractDelegationManagerStakerForceUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerUndelegatedIterator struct { + Event *ContractDelegationManagerStakerUndelegated // 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 *ContractDelegationManagerStakerUndelegatedIterator) 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(ContractDelegationManagerStakerUndelegated) + 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(ContractDelegationManagerStakerUndelegated) + 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 *ContractDelegationManagerStakerUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerStakerUndelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerUndelegated struct { + Staker common.Address + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerUndelegatedIterator, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerStakerUndelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule) + 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(ContractDelegationManagerStakerUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerUndelegated", 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 +} + +// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*ContractDelegationManagerStakerUndelegated, error) { + event := new(ContractDelegationManagerStakerUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ContractDelegationManager contract. +type ContractDelegationManagerUnpausedIterator struct { + Event *ContractDelegationManagerUnpaused // 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 *ContractDelegationManagerUnpausedIterator) 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(ContractDelegationManagerUnpaused) + 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(ContractDelegationManagerUnpaused) + 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 *ContractDelegationManagerUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerUnpaused represents a Unpaused event raised by the ContractDelegationManager contract. +type ContractDelegationManagerUnpaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*ContractDelegationManagerUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerUnpausedIterator{contract: _ContractDelegationManager.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Unpaused", accountRule) + 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(ContractDelegationManagerUnpaused) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Unpaused", 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 +} + +// ParseUnpaused is a log parse operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseUnpaused(log types.Log) (*ContractDelegationManagerUnpaused, error) { + event := new(ContractDelegationManagerUnpaused) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerWithdrawalCompletedIterator is returned from FilterWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for WithdrawalCompleted events raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalCompletedIterator struct { + Event *ContractDelegationManagerWithdrawalCompleted // 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 *ContractDelegationManagerWithdrawalCompletedIterator) 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(ContractDelegationManagerWithdrawalCompleted) + 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(ContractDelegationManagerWithdrawalCompleted) + 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 *ContractDelegationManagerWithdrawalCompletedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerWithdrawalCompletedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerWithdrawalCompleted represents a WithdrawalCompleted event raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalCompleted struct { + WithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalCompleted is a free log retrieval operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d. +// +// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterWithdrawalCompleted(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalCompletedIterator, error) { + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "WithdrawalCompleted") + if err != nil { + return nil, err + } + return &ContractDelegationManagerWithdrawalCompletedIterator{contract: _ContractDelegationManager.contract, event: "WithdrawalCompleted", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalCompleted is a free log subscription operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d. +// +// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalCompleted) (event.Subscription, error) { + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "WithdrawalCompleted") + 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(ContractDelegationManagerWithdrawalCompleted) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", 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 +} + +// ParseWithdrawalCompleted is a log parse operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d. +// +// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseWithdrawalCompleted(log types.Log) (*ContractDelegationManagerWithdrawalCompleted, error) { + event := new(ContractDelegationManagerWithdrawalCompleted) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerWithdrawalDelayBlocksSetIterator is returned from FilterWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for WithdrawalDelayBlocksSet events raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalDelayBlocksSetIterator struct { + Event *ContractDelegationManagerWithdrawalDelayBlocksSet // 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 *ContractDelegationManagerWithdrawalDelayBlocksSetIterator) 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(ContractDelegationManagerWithdrawalDelayBlocksSet) + 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(ContractDelegationManagerWithdrawalDelayBlocksSet) + 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 *ContractDelegationManagerWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerWithdrawalDelayBlocksSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerWithdrawalDelayBlocksSet represents a WithdrawalDelayBlocksSet event raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalDelayBlocksSet struct { + PreviousValue *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "WithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &ContractDelegationManagerWithdrawalDelayBlocksSetIterator{contract: _ContractDelegationManager.contract, event: "WithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "WithdrawalDelayBlocksSet") + 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(ContractDelegationManagerWithdrawalDelayBlocksSet) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalDelayBlocksSet", 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 +} + +// ParseWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseWithdrawalDelayBlocksSet(log types.Log) (*ContractDelegationManagerWithdrawalDelayBlocksSet, error) { + event := new(ContractDelegationManagerWithdrawalDelayBlocksSet) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalDelayBlocksSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerWithdrawalMigratedIterator is returned from FilterWithdrawalMigrated and is used to iterate over the raw logs and unpacked data for WithdrawalMigrated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalMigratedIterator struct { + Event *ContractDelegationManagerWithdrawalMigrated // 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 *ContractDelegationManagerWithdrawalMigratedIterator) 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(ContractDelegationManagerWithdrawalMigrated) + 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(ContractDelegationManagerWithdrawalMigrated) + 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 *ContractDelegationManagerWithdrawalMigratedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerWithdrawalMigratedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerWithdrawalMigrated represents a WithdrawalMigrated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalMigrated struct { + OldWithdrawalRoot [32]byte + NewWithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalMigrated is a free log retrieval operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterWithdrawalMigrated(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalMigratedIterator, error) { + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return &ContractDelegationManagerWithdrawalMigratedIterator{contract: _ContractDelegationManager.contract, event: "WithdrawalMigrated", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalMigrated is a free log subscription operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdrawalMigrated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalMigrated) (event.Subscription, error) { + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "WithdrawalMigrated") + 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(ContractDelegationManagerWithdrawalMigrated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalMigrated", 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 +} + +// ParseWithdrawalMigrated is a log parse operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseWithdrawalMigrated(log types.Log) (*ContractDelegationManagerWithdrawalMigrated, error) { + event := new(ContractDelegationManagerWithdrawalMigrated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalMigrated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerWithdrawalQueuedIterator is returned from FilterWithdrawalQueued and is used to iterate over the raw logs and unpacked data for WithdrawalQueued events raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalQueuedIterator struct { + Event *ContractDelegationManagerWithdrawalQueued // 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 *ContractDelegationManagerWithdrawalQueuedIterator) 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(ContractDelegationManagerWithdrawalQueued) + 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(ContractDelegationManagerWithdrawalQueued) + 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 *ContractDelegationManagerWithdrawalQueuedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerWithdrawalQueuedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerWithdrawalQueued represents a WithdrawalQueued event raised by the ContractDelegationManager contract. +type ContractDelegationManagerWithdrawalQueued struct { + WithdrawalRoot [32]byte + Withdrawal IDelegationManagerWithdrawal + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalQueued is a free log retrieval operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9. +// +// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalQueuedIterator, error) { + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "WithdrawalQueued") + if err != nil { + return nil, err + } + return &ContractDelegationManagerWithdrawalQueuedIterator{contract: _ContractDelegationManager.contract, event: "WithdrawalQueued", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalQueued is a free log subscription operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9. +// +// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalQueued) (event.Subscription, error) { + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "WithdrawalQueued") + 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(ContractDelegationManagerWithdrawalQueued) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", 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 +} + +// ParseWithdrawalQueued is a log parse operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9. +// +// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseWithdrawalQueued(log types.Log) (*ContractDelegationManagerWithdrawalQueued, error) { + event := new(ContractDelegationManagerWithdrawalQueued) + if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/EigenDAServiceManager/binding.go b/contracts/bindings/EigenDAServiceManager/binding.go index 5477646b3..72e3ee8e5 100644 --- a/contracts/bindings/EigenDAServiceManager/binding.go +++ b/contracts/bindings/EigenDAServiceManager/binding.go @@ -67,10 +67,17 @@ type IEigenDAServiceManagerBatchHeader struct { ReferenceBlockNumber uint32 } +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + // ContractEigenDAServiceManagerMetaData contains all meta data concerning the ContractEigenDAServiceManager contract. var ContractEigenDAServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIBLSRegistryCoordinatorWithIndices\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_delegationMananger\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STORE_DURATION_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsPubkeyRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSPubkeyRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentages\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordFirstStakeUpdate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"serveUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordLastStakeUpdateAndRevokeSlashingAbility\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"serveUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordStakeUpdate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"updateBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"serveUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"prevElement\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"fee\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeePerBytePerTimeSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeSetterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PaymentManagerSet\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101406040523480156200001257600080fd5b5060405162003a4e38038062003a4e833981016040819052620000359162000244565b83806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b59190620002ac565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316633561deb16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001339190620002ac565b6001600160a01b0390811660c0528481166101005283811660e052821661012052506200015f62000169565b50505050620002d3565b600054610100900460ff1615620001d65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000229576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200024157600080fd5b50565b600080600080608085870312156200025b57600080fd5b845162000268816200022b565b60208601519094506200027b816200022b565b60408601519093506200028e816200022b565b6060860151909250620002a1816200022b565b939692955090935050565b600060208284031215620002bf57600080fd5b8151620002cc816200022b565b9392505050565b60805160a05160c05160e05161010051610120516137016200034d6000396000610424015260006102ab0152600061045e0152600081816102590152610b220152600081816103690152818161113001526112d0015260008181610390015281816104d901528181610f840152611a5201526137016000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063683048351161010f5780638da5cb5b116100a2578063eccbbfc911610071578063eccbbfc914610480578063ef024458146104a0578063f2fde38b146104a8578063fabc1cbc146104bb57600080fd5b80638da5cb5b14610417578063b13442711461041f578063c747075b14610446578063ea4d3c9b1461045957600080fd5b806372d18e8d116100de57806372d18e8d146103db578063758f8dba146103e95780637794965a146103f1578063886f11951461040457600080fd5b806368304835146103645780636d14a9871461038b5780636efb4636146103b2578063715018a6146103d357600080fd5b806339b70e38116101875780635ac86ab7116101565780635ac86ab71461030d5780635c975abb146103405780635e033476146103525780635e8b3f2d1461035c57600080fd5b806339b70e38146102a6578063485cc955146102cd5780634972134a146102e0578063595c6a671461030557600080fd5b8063171f1d5b116101c3578063171f1d5b14610225578063175d3205146101ea5780633561deb11461025457806338c8ee641461029357600080fd5b80630ffabbce146101ea57806310d67a2f146101ff578063136439dd14610212575b600080fd5b6101fd6101f8366004612993565b6104ce565b005b6101fd61020d3660046129c8565b610523565b6101fd6102203660046129ec565b6105d6565b610238610233366004612b6a565b610715565b6040805192151583529015156020830152015b60405180910390f35b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b6101fd6102a13660046129c8565b61089f565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b6101fd6102db366004612bbb565b610905565b6065546102f09063ffffffff1681565b60405163ffffffff909116815260200161024b565b6101fd610a24565b61033061031b366004612bf4565b606854600160ff9092169190911b9081161490565b604051901515815260200161024b565b6068545b60405190815260200161024b565b6102f0620189c081565b6102f0609681565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b6103c56103c0366004612eb9565b610aeb565b60405161024b929190612fac565b6101fd611569565b60655463ffffffff166102f0565b6102f061157d565b6101fd6103ff366004612ff5565b61159d565b60675461027b906001600160a01b031681565b61027b611a33565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b6101fd610454366004613060565b611a47565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461048e3660046130ad565b60666020526000908152604090205481565b610344606481565b6101fd6104b63660046129c8565b611a95565b6101fd6104c93660046129ec565b611b0b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461051f5760405162461bcd60e51b8152600401610516906130c8565b60405180910390fd5b5050565b606760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059a919061311e565b6001600160a01b0316336001600160a01b0316146105ca5760405162461bcd60e51b81526004016105169061313b565b6105d381611c67565b50565b60675460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561061e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106429190613185565b61065e5760405162461bcd60e51b8152600401610516906131a7565b606854818116146106d75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610516565b606881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061075d5761075d6131ef565b60200201518951600160200201518a60200151600060028110610782576107826131ef565b60200201518b6020015160016002811061079e5761079e6131ef565b602090810291909101518c518d8301516040516107fb9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61081e9190613205565b90506108916108376108308884611d5e565b8690611df5565b61083f611e89565b61088761087885610872604080518082018252600080825260209182015281518083019092526001825260029082015290565b90611d5e565b6108818c611f49565b90611df5565b886201d4c0611fd9565b909890975095505050505050565b60405162461bcd60e51b815260206004820152603560248201527f456967656e4441536572766963654d616e616765722e667265657a654f706572604482015274185d1bdc8e881b9bdd081a5b5c1b195b595b9d1959605a1b6064820152608401610516565b600054610100900460ff16158080156109255750600054600160ff909116105b8061093f5750303b15801561093f575060005460ff166001145b6109a25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610516565b6000805460ff1916600117905580156109c5576000805461ff0019166101001790555b6109d08360006121fd565b6109d9826122e3565b8015610a1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60675460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a909190613185565b610aac5760405162461bcd60e51b8152600401610516906131a7565b600019606881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60408051808201909152606080825260208201526040805180820190915260008082526020820181905290815b86811015610d15577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c1af6b24898984818110610b6157610b616131ef565b9050013560f81c60f81b60f81c888860a001518581518110610b8557610b856131ef565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190613227565b6001600160401b031916610c3586604001518381518110610c2857610c286131ef565b6020026020010151612335565b67ffffffffffffffff191614610cd15760405162461bcd60e51b815260206004820152606160248201526000805160206136ac83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610516565b610d0185604001518281518110610cea57610cea6131ef565b602002602001015183611df590919063ffffffff16565b915080610d0d81613268565b915050610b18565b506040805180820190915260608082526020820152866001600160401b03811115610d4257610d42612a05565b604051908082528060200260200182016040528015610d6b578160200160208202803683370190505b506020820152866001600160401b03811115610d8957610d89612a05565b604051908082528060200260200182016040528015610db2578160200160208202803683370190505b5081526020850151516000906001600160401b03811115610dd557610dd5612a05565b604051908082528060200260200182016040528015610dfe578160200160208202803683370190505b50905060008660200151516001600160401b03811115610e2057610e20612a05565b604051908082528060200260200182016040528015610e49578160200160208202803683370190505b5090506000610e8d8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061237892505050565b905060005b8860200151518110156110f857610eb889602001518281518110610c2857610c286131ef565b848281518110610eca57610eca6131ef565b60209081029190910101528015610f825783610ee7600183613283565b81518110610ef757610ef76131ef565b602002602001015160001c848281518110610f1457610f146131ef565b602002602001015160001c11610f82576040805162461bcd60e51b81526020600482015260248101919091526000805160206136ac83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610516565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633064620d858381518110610fc357610fc36131ef565b60200260200101518c8c600001518581518110610fe257610fe26131ef565b60200260200101516040518463ffffffff1660e01b815260040161101f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611060919061329a565b6001600160c01b031683828151811061107b5761107b6131ef565b6020026020010181815250506110e46110dd6110b1848685815181106110a3576110a36131ef565b6020026020010151166124e1565b6110d78c6020015185815181106110ca576110ca6131ef565b6020026020010151612512565b906125ad565b8790611df5565b9550806110f081613268565b915050610e92565b505060005b60ff81168a111561143d5760008b8b8360ff1681811061111f5761111f6131ef565b9050013560f81c60f81b60f81c90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c56828c8c60c001518660ff1681518110611178576111786131ef565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156111d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f891906132c3565b85602001518360ff1681518110611211576112116131ef565b6001600160601b03909216602092830291909101820152850151805160ff8416908110611240576112406131ef565b602002602001015185600001518360ff1681518110611261576112616131ef565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518163ffffffff16101561142f576112c9858263ffffffff16815181106112b3576112b36131ef565b60200260200101518460ff161c60019081161490565b1561141d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a43cde89848e898563ffffffff1681518110611317576113176131ef565b60200260200101518f60e001518960ff1681518110611338576113386131ef565b60200260200101518763ffffffff1681518110611357576113576131ef565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df91906132c3565b8751805160ff87169081106113f6576113f66131ef565b6020026020010181815161140a91906132ec565b6001600160601b03169052506001909101905b8061142781613314565b915050611285565b5082600101925050506110fd565b50506000806114568c868a606001518b60800151610715565b91509150816114c75760405162461bcd60e51b815260206004820152604360248201526000805160206136ac83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610516565b806115285760405162461bcd60e51b815260206004820152603960248201526000805160206136ac83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610516565b50506000878260405160200161153f929190613338565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611571612692565b61157b60006122e3565b565b6000609661158e620189c043613380565b6115989190613380565b905090565b606854600090600190811614156115f65760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606401610516565b3233146116735760405162461bcd60e51b8152602060048201526051602482015260008051602061368c83398151915260448201527f63683a2068656164657220616e64206e6f6e7369676e65722064617461206d75606482015270737420626520696e2063616c6c6461746160781b608482015260a401610516565b4361168460808501606086016130ad565b63ffffffff1611156117045760405162461bcd60e51b815260206004820152604f602482015260008051602061368c83398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d6260648201526e657220697320696e2066757475726560881b608482015260a401610516565b63ffffffff4316609661171d60808601606087016130ad565b6117279190613380565b63ffffffff1610156117ad5760405162461bcd60e51b8152602060048201526055602482015260008051602061368c83398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d62606482015274195c881a5cc81d1bdbc819985c881a5b881c185cdd605a1b608482015260a401610516565b60006117c06117bb85613417565b6126f1565b90506000806117ec836117d660208901896134b7565b6117e660808b0160608c016130ad565b89610aeb565b9150915060005b61180060408801886134b7565b90508110156119425761181660408801886134b7565b82818110611826576118266131ef565b9050013560f81c60f81b60f81c60ff168360200151828151811061184c5761184c6131ef565b602002602001015161185e9190613504565b6001600160601b031660648460000151838151811061187f5761187f6131ef565b60200260200101516001600160601b031661189a9190613533565b10156119305760405162461bcd60e51b81526020600482015260646024820181905260008051602061368c83398151915260448301527f63683a207369676e61746f7269657320646f206e6f74206f776e206174206c65908201527f617374207468726573686f6c642070657263656e74616765206f6620612071756084820152636f72756d60e01b60a482015260c401610516565b8061193a81613268565b9150506117f3565b5060655460009063ffffffff168161195989612753565b60408051602080820184905281830188905260a087901b6001600160a01b03191660608301524360e01b6001600160e01b031916606c830152825160508184030181526070830180855281519183019190912063ffffffff8816600081815260669094529285902055526001600160601b0386166090820152905191925087917f2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d639181900360b00190a2611a0e826001613380565b6065805463ffffffff191663ffffffff92909216919091179055505050505050505050565b60006115986033546001600160a01b031690565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8f5760405162461bcd60e51b8152600401610516906130c8565b50505050565b611a9d612692565b6001600160a01b038116611b025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610516565b6105d3816122e3565b606760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b82919061311e565b6001600160a01b0316336001600160a01b031614611bb25760405162461bcd60e51b81526004016105169061313b565b606854198119606854191614611c305760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610516565b606881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161070a565b6001600160a01b038116611cf55760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610516565b606754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606780546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152611d7a612890565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611dad57611daf565bfe5b5080611ded5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610516565b505092915050565b6040805180820190915260008082526020820152611e116128ae565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015611dad575080611ded5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610516565b611e916128cc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080611f7960008051602061366c83398151915286613205565b90505b611f8581612766565b909350915060008051602061366c833981519152828309831415611fbf576040805180820190915290815260208101919091529392505050565b60008051602061366c833981519152600182089050611f7c565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061200b6128f1565b60005b60028110156121d0576000612024826006613533565b9050848260028110612038576120386131ef565b6020020151518361204a836000613552565b600c811061205a5761205a6131ef565b6020020152848260028110612071576120716131ef565b602002015160200151838260016120889190613552565b600c8110612098576120986131ef565b60200201528382600281106120af576120af6131ef565b60200201515151836120c2836002613552565b600c81106120d2576120d26131ef565b60200201528382600281106120e9576120e96131ef565b6020020151516001602002015183612102836003613552565b600c8110612112576121126131ef565b6020020152838260028110612129576121296131ef565b602002015160200151600060028110612144576121446131ef565b602002015183612155836004613552565b600c8110612165576121656131ef565b602002015283826002811061217c5761217c6131ef565b602002015160200151600160028110612197576121976131ef565b6020020151836121a8836005613552565b600c81106121b8576121b86131ef565b602002015250806121c881613268565b91505061200e565b506121d9612910565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6067546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610516565b606881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261051f82611c67565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008160000151826020015160405160200161235b929190918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b6000610100825111156123ec5760405162461bcd60e51b815260206004820152603660248201527f4269746d61705574696c732e62797465734172726179546f4269746d61703a206044820152756279746573417272617920697320746f6f206c6f6e6760501b6064820152608401610516565b81516123fa57506000919050565b60008083600081518110612410576124106131ef565b0160200151600160f89190911c81901b92505b84518110156124d85784818151811061243e5761243e6131ef565b0160200151600160f89190911c1b9150828216156124c45760405162461bcd60e51b815260206004820152603a60248201527f4269746d61705574696c732e62797465734172726179546f4269746d61703a2060448201527f72657065617420656e74727920696e20627974657341727261790000000000006064820152608401610516565b918117916124d181613268565b9050612423565b50909392505050565b6000805b821561250c576124f6600184613283565b90921691806125048161356a565b9150506124e5565b92915050565b6040805180820190915260008082526020820152815115801561253757506020820151155b15612555575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602061366c83398151915284602001516125889190613205565b6125a09060008051602061366c833981519152613283565b905292915050565b919050565b60408051808201909152600080825260208201526102008261ffff16106126095760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610516565b8161ffff166001141561261d57508161250c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff16111561268757600161ffff871660ff83161c8116141561266a576126678484611df5565b93505b6126748384611df5565b92506201fffe600192831b169101612639565b509195945050505050565b3361269b611a33565b6001600160a01b03161461157b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610516565b600061272e82604080518082019091526000808252602082015250604080518082019091528151815260609091015163ffffffff16602082015290565b6040805182516020808301919091529092015163ffffffff169082015260600161235b565b60008160405160200161235b91906135f0565b6000808060008051602061366c833981519152600360008051602061366c8339815191528660008051602061366c8339815191528889090908905060006127dc827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260008051602061366c8339815191526127e8565b91959194509092505050565b6000806127f3612910565b6127fb61292e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015611dad5750826128855760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610516565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806128df61294c565b81526020016128ec61294c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146105d357600080fd5b803563ffffffff811681146125a857600080fd5b600080604083850312156129a657600080fd5b82356129b18161296a565b91506129bf6020840161297f565b90509250929050565b6000602082840312156129da57600080fd5b81356129e58161296a565b9392505050565b6000602082840312156129fe57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612a3d57612a3d612a05565b60405290565b60405161010081016001600160401b0381118282101715612a3d57612a3d612a05565b604051601f8201601f191681016001600160401b0381118282101715612a8e57612a8e612a05565b604052919050565b600060408284031215612aa857600080fd5b612ab0612a1b565b9050813581526020820135602082015292915050565b600082601f830112612ad757600080fd5b604051604081018181106001600160401b0382111715612af957612af9612a05565b8060405250806040840185811115612b1057600080fd5b845b81811015612687578035835260209283019201612b12565b600060808284031215612b3c57600080fd5b612b44612a1b565b9050612b508383612ac6565b8152612b5f8360408401612ac6565b602082015292915050565b6000806000806101208587031215612b8157600080fd5b84359350612b928660208701612a96565b9250612ba18660608701612b2a565b9150612bb08660e08701612a96565b905092959194509250565b60008060408385031215612bce57600080fd5b8235612bd98161296a565b91506020830135612be98161296a565b809150509250929050565b600060208284031215612c0657600080fd5b813560ff811681146129e557600080fd5b60006001600160401b03821115612c3057612c30612a05565b5060051b60200190565b600082601f830112612c4b57600080fd5b81356020612c60612c5b83612c17565b612a66565b82815260059290921b84018101918181019086841115612c7f57600080fd5b8286015b84811015612ca157612c948161297f565b8352918301918301612c83565b509695505050505050565b600082601f830112612cbd57600080fd5b81356020612ccd612c5b83612c17565b82815260069290921b84018101918181019086841115612cec57600080fd5b8286015b84811015612ca157612d028882612a96565b835291830191604001612cf0565b600082601f830112612d2157600080fd5b81356020612d31612c5b83612c17565b82815260059290921b84018101918181019086841115612d5057600080fd5b8286015b84811015612ca15780356001600160401b03811115612d735760008081fd5b612d818986838b0101612c3a565b845250918301918301612d54565b60006101808284031215612da257600080fd5b612daa612a43565b905081356001600160401b0380821115612dc357600080fd5b612dcf85838601612c3a565b83526020840135915080821115612de557600080fd5b612df185838601612cac565b60208401526040840135915080821115612e0a57600080fd5b612e1685838601612cac565b6040840152612e288560608601612b2a565b6060840152612e3a8560e08601612a96565b6080840152610120840135915080821115612e5457600080fd5b612e6085838601612c3a565b60a0840152610140840135915080821115612e7a57600080fd5b612e8685838601612c3a565b60c0840152610160840135915080821115612ea057600080fd5b50612ead84828501612d10565b60e08301525092915050565b600080600080600060808688031215612ed157600080fd5b8535945060208601356001600160401b0380821115612eef57600080fd5b818801915088601f830112612f0357600080fd5b813581811115612f1257600080fd5b896020828501011115612f2457600080fd5b6020830196509450612f386040890161297f565b93506060880135915080821115612f4e57600080fd5b50612f5b88828901612d8f565b9150509295509295909350565b600081518084526020808501945080840160005b83811015612fa15781516001600160601b031687529582019590820190600101612f7c565b509495945050505050565b6040815260008351604080840152612fc76080840182612f68565b90506020850151603f19848303016060850152612fe48282612f68565b925050508260208301529392505050565b6000806040838503121561300857600080fd5b82356001600160401b038082111561301f57600080fd5b908401906080828703121561303357600080fd5b9092506020840135908082111561304957600080fd5b5061305685828601612d8f565b9150509250929050565b6000806000806080858703121561307657600080fd5b84356130818161296a565b935061308f6020860161297f565b925061309d6040860161297f565b9396929550929360600135925050565b6000602082840312156130bf57600080fd5b6129e58261297f565b60208082526036908201527f6f6e6c795265676973747279436f6f7264696e61746f723a206e6f742066726f60408201527536903932b3b4b9ba393c9031b7b7b93234b730ba37b960511b606082015260800190565b60006020828403121561313057600080fd5b81516129e58161296a565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561319757600080fd5b815180151581146129e557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261322257634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561323957600080fd5b815167ffffffffffffffff19811681146129e557600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561327c5761327c613252565b5060010190565b60008282101561329557613295613252565b500390565b6000602082840312156132ac57600080fd5b81516001600160c01b03811681146129e557600080fd5b6000602082840312156132d557600080fd5b81516001600160601b03811681146129e557600080fd5b60006001600160601b038381169083168181101561330c5761330c613252565b039392505050565b600063ffffffff8083168181141561332e5761332e613252565b6001019392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561337357815185529382019390820190600101613357565b5092979650505050505050565b600063ffffffff80831681851680830382111561339f5761339f613252565b01949350505050565b600082601f8301126133b957600080fd5b81356001600160401b038111156133d2576133d2612a05565b6133e5601f8201601f1916602001612a66565b8181528460208386010111156133fa57600080fd5b816020850160208301376000918101602001919091529392505050565b60006080823603121561342957600080fd5b604051608081016001600160401b03828210818311171561344c5761344c612a05565b8160405284358352602085013591508082111561346857600080fd5b613474368387016133a8565b6020840152604085013591508082111561348d57600080fd5b5061349a368286016133a8565b6040830152506134ac6060840161297f565b606082015292915050565b6000808335601e198436030181126134ce57600080fd5b8301803591506001600160401b038211156134e857600080fd5b6020019150368190038213156134fd57600080fd5b9250929050565b60006001600160601b038083168185168183048111821515161561352a5761352a613252565b02949350505050565b600081600019048311821515161561354d5761354d613252565b500290565b6000821982111561356557613565613252565b500190565b600061ffff8083168181141561332e5761332e613252565b6000808335601e1984360301811261359957600080fd5b83016020810192503590506001600160401b038111156135b857600080fd5b8036038313156134fd57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600061360a6020840184613582565b6080604085015261361f60a0850182846135c7565b91505061362f6040850185613582565b848303601f190160608601526136468382846135c7565b9250505063ffffffff61365b6060860161297f565b166080840152809150509291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47456967656e4441536572766963654d616e616765722e636f6e6669726d426174424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220ba3ff7c213e188e21216c12ecaee8eaa1f03dac3a96dbdb17015130a9662b82a64736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"__delegationMananger\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"__registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"__stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STORE_DURATION_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchConfirmer\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentages\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6101606040523480156200001257600080fd5b506040516200501b3803806200501b8339810160408190526200003591620002e7565b6001600160a01b0380841660a052808316608052811660c052818381836200005c620001ff565b5050506001600160a01b03811660e081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa158015620000aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d091906200033b565b6001600160a01b0316610100816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200033b565b6001600160a01b0316610120816001600160a01b031681525050610100516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d191906200033b565b6001600160a01b031661014052506067805460ff19166001179055620001f6620001ff565b50505062000362565b600254600160a81b900460ff16156200026e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60025460ff600160a01b90910481161015620002cc576002805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002e457600080fd5b50565b600080600060608486031215620002fd57600080fd5b83516200030a81620002ce565b60208501519093506200031d81620002ce565b60408501519092506200033081620002ce565b809150509250925092565b6000602082840312156200034e57600080fd5b81516200035b81620002ce565b9392505050565b60805160a05160c05160e051610100516101205161014051614bcb62000450600039600081816104b00152611647015260008181610342015261183101526000818161037b01528181611a070152611bc90152600081816103a201528181610d9501528181611325015281816114bd01526116eb015260008181610abe01528181610c1901528181610cb001528181612829015281816129ac0152612a4b015260008181611eb101528181612479015261254d0152600081816108e901528181610978015281816109f801528181612425015281816124f10152818161276701526129070152614bcb6000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806372d18e8d11610125578063c0c53b8b116100ad578063eccbbfc91161007c578063eccbbfc9146104da578063ef024458146104fa578063f122098314610502578063f2fde38b14610515578063fabc1cbc1461052857600080fd5b8063c0c53b8b14610485578063c4d66de814610498578063df5cf723146104ab578063e481af9d146104d257600080fd5b8063886f1195116100f4578063886f1195146104295780638da5cb5b146104415780639926ee7d14610452578063a364f4da14610465578063b98d09081461047857600080fd5b806372d18e8d146103ed578063750521f5146103fb578063758f8dba1461040e5780637794965a1461041657600080fd5b80635ac86ab7116101a85780635e8b3f2d116101775780635e8b3f2d1461036e57806368304835146103765780636d14a9871461039d5780636efb4636146103c4578063715018a6146103e557600080fd5b80635ac86ab7146102f85780635c975abb1461032b5780635df459461461033d5780635e0334761461036457600080fd5b806339f309d5116101e457806339f309d51461028d578063416c7e5e146102b85780634972134a146102cb578063595c6a67146102f057600080fd5b806310d67a2f14610216578063136439dd1461022b578063171f1d5b1461023e57806333cfb7b71461026d575b600080fd5b610229610224366004613b95565b61053b565b005b610229610239366004613bb2565b6105f7565b61025161024c366004613d1c565b61073a565b6040805192151583529015156020830152015b60405180910390f35b61028061027b366004613b95565b6108c4565b6040516102649190613d6d565b6002546102a0906001600160a01b031681565b6040516001600160a01b039091168152602001610264565b6102296102c6366004613dc8565b610d93565b6000546102db9063ffffffff1681565b60405163ffffffff9091168152602001610264565b610229610f08565b61031b610306366004613df4565b606854600160ff9092169190911b9081161490565b6040519015158152602001610264565b6068545b604051908152602001610264565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b6102db620189c081565b6102db609681565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b6103d76103d23660046140c7565b610fd3565b6040516102649291906141ba565b610229611e7e565b60005463ffffffff166102db565b61022961040936600461425a565b611e92565b6102db611f1b565b6102296104243660046142aa565b611f3b565b6067546102a09061010090046001600160a01b031681565b6035546001600160a01b03166102a0565b61022961046036600461433c565b61241a565b610229610473366004613b95565b6124e6565b60675461031b9060ff1681565b6102296104933660046143e7565b61257c565b6102296104a6366004613b95565b612679565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b610280612761565b61032f6104e8366004614432565b60016020526000908152604090205481565b61032f606481565b610229610510366004613b95565b612b2a565b610229610523366004613b95565b612b3b565b610229610536366004613bb2565b612bb1565b606760019054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b2919061444d565b6001600160a01b0316336001600160a01b0316146105eb5760405162461bcd60e51b81526004016105e29061446a565b60405180910390fd5b6105f481612d0d565b50565b60675460405163237dfb4760e11b81523360048201526101009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066791906144b4565b6106835760405162461bcd60e51b81526004016105e2906144d1565b606854818116146106fc5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016105e2565b606881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061078257610782614519565b60200201518951600160200201518a602001516000600281106107a7576107a7614519565b60200201518b602001516001600281106107c3576107c3614519565b602090810291909101518c518d8301516040516108209a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610843919061452f565b90506108b661085c6108558884612e0f565b8690612ea6565b610864612f3a565b6108ac61089d85610897604080518082018252600080825260209182015281518083019092526001825260029082015290565b90612e0f565b6108a68c612ffa565b90612ea6565b886201d4c061308a565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190614551565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e3919061456a565b90506001600160c01b0381161580610a7d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a789190614593565b60ff16155b15610a9957505060408051600081526020810190915292915050565b6000610aad826001600160c01b03166132ae565b90506000805b8251811015610b83577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f5848381518110610afd57610afd614519565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190614551565b610b6f90836145c6565b915080610b7b816145de565b915050610ab3565b506000816001600160401b03811115610b9e57610b9e613bcb565b604051908082528060200260200182016040528015610bc7578160200160208202803683370190505b5090506000805b8451811015610d86576000858281518110610beb57610beb614519565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190614551565b905060005b81811015610d70576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d229190614610565b60000151868681518110610d3857610d38614519565b6001600160a01b039092166020928302919091019091015284610d5a816145de565b9550508080610d68906145de565b915050610c89565b5050508080610d7e906145de565b915050610bce565b5090979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061444d565b6001600160a01b0316336001600160a01b031614610ec15760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016105e2565b6067805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60675460405163237dfb4760e11b81523360048201526101009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7891906144b4565b610f945760405162461bcd60e51b81526004016105e2906144d1565b600019606881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60408051808201825260608082526020820152908201515160009085148015611000575060a08301515185145b8015611010575060c08301515185145b8015611020575060e08301515185145b61108a5760405162461bcd60e51b81526020600482015260416024820152600080516020614b7683398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016105e2565b825151602084015151146111025760405162461bcd60e51b815260206004820152604460248201819052600080516020614b76833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016105e2565b4363ffffffff168463ffffffff1611156111725760405162461bcd60e51b815260206004820152603c6024820152600080516020614b7683398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016105e2565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156111b3576111b3613bcb565b6040519080825280602002602001820160405280156111dc578160200160208202803683370190505b506020820152866001600160401b038111156111fa576111fa613bcb565b604051908082528060200260200182016040528015611223578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561125757611257613bcb565b604051908082528060200260200182016040528015611280578160200160208202803683370190505b5081526020860151516001600160401b038111156112a0576112a0613bcb565b6040519080825280602002602001820160405280156112c9578160200160208202803683370190505b508160200181905250600061139b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113969190614593565b61330b565b905060005b876020015151811015611636576113e5886020015182815181106113c6576113c6614519565b6020026020010151805160009081526020918201519091526040902090565b836020015182815181106113fb576113fb614519565b602090810291909101015280156114bb57602083015161141c60018361464f565b8151811061142c5761142c614519565b602002602001015160001c8360200151828151811061144d5761144d614519565b602002602001015160001c116114bb576040805162461bcd60e51b8152602060048201526024810191909152600080516020614b7683398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016105e2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec63518460200151838151811061150057611500614519565b60200260200101518b8b60000151858151811061151f5761151f614519565b60200260200101516040518463ffffffff1660e01b815260040161155c9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d919061456a565b6001600160c01b0316836000015182815181106115bc576115bc614519565b6020026020010181815250506116226108556115f684866000015185815181106115e8576115e8614519565b6020026020010151166133c6565b8a60200151848151811061160c5761160c614519565b60200260200101516133f190919063ffffffff16565b94508061162e816145de565b9150506113a0565b5050611641836134d5565b925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350f73e7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c79190614551565b60675490915060ff1660005b8a811015611d4d57811561182f578963ffffffff16837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061172a5761172a614519565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561176a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178e9190614551565b61179891906145c6565b101561182f5760405162461bcd60e51b81526020600482015260666024820152600080516020614b7683398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016105e2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061187057611870614519565b9050013560f81c60f81b60f81c8c8c60a00151858151811061189457611894614519565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156118f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119149190614666565b6001600160401b0319166119378a6040015183815181106113c6576113c6614519565b67ffffffffffffffff1916146119d35760405162461bcd60e51b81526020600482015260616024820152600080516020614b7683398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016105e2565b611a03896040015182815181106119ec576119ec614519565b602002602001015187612ea690919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110611a4657611a46614519565b9050013560f81c60f81b60f81c8c8c60c001518581518110611a6a57611a6a614519565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea9190614691565b85602001518281518110611b0057611b00614519565b6001600160601b03909216602092830291909101820152850151805182908110611b2c57611b2c614519565b602002602001015185600001518281518110611b4a57611b4a614519565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015611d3857611bc286600001518281518110611b9457611b94614519565b60200260200101518f8f86818110611bae57611bae614519565b600192013560f81c9290921c811614919050565b15611d26577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f86818110611c0857611c08614519565b9050013560f81c60f81b60f81c8e89602001518581518110611c2c57611c2c614519565b60200260200101518f60e001518881518110611c4a57611c4a614519565b60200260200101518781518110611c6357611c63614519565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015611cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ceb9190614691565b8751805185908110611cff57611cff614519565b60200260200101818151611d1391906146ac565b6001600160601b03169052506001909101905b80611d30816145de565b915050611b6e565b50508080611d45906145de565b9150506116d3565b505050600080611d678c868a606001518b6080015161073a565b9150915081611dd85760405162461bcd60e51b81526020600482015260436024820152600080516020614b7683398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016105e2565b80611e395760405162461bcd60e51b81526020600482015260396024820152600080516020614b7683398151915260448201527f7265733a207369676e617475726520697320696e76616c69640000000000000060648201526084016105e2565b50506000878260200151604051602001611e549291906146d4565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611e86613570565b611e9060006135ca565b565b611e9a613570565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ee6908490600401614774565b600060405180830381600087803b158015611f0057600080fd5b505af1158015611f14573d6000803e3d6000fd5b5050505050565b60006096611f2c620189c043614787565b611f369190614787565b905090565b60685460009060019081161415611f945760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e646578206973207061757365640000000000000060448201526064016105e2565b6002546001600160a01b031633146120035760405162461bcd60e51b815260206004820152602c60248201527f6f6e6c794261746368436f6e6669726d65723a206e6f742066726f6d2062617460448201526b31b41031b7b73334b936b2b960a11b60648201526084016105e2565b3233146120805760405162461bcd60e51b81526020600482015260516024820152600080516020614b5683398151915260448201527f63683a2068656164657220616e64206e6f6e7369676e65722064617461206d75606482015270737420626520696e2063616c6c6461746160781b608482015260a4016105e2565b436120916080850160608601614432565b63ffffffff1611156121115760405162461bcd60e51b815260206004820152604f6024820152600080516020614b5683398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d6260648201526e657220697320696e2066757475726560881b608482015260a4016105e2565b63ffffffff4316609661212a6080860160608701614432565b6121349190614787565b63ffffffff1610156121ba5760405162461bcd60e51b81526020600482015260556024820152600080516020614b5683398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d62606482015274195c881a5cc81d1bdbc819985c881a5b881c185cdd605a1b608482015260a4016105e2565b60006121cd6121c8856147af565b61361c565b90506000806121f9836121e3602089018961484f565b6121f360808b0160608c01614432565b89610fd3565b9150915060005b61220d604088018861484f565b905081101561234f57612223604088018861484f565b8281811061223357612233614519565b9050013560f81c60f81b60f81c60ff168360200151828151811061225957612259614519565b602002602001015161226b919061489c565b6001600160601b031660648460000151838151811061228c5761228c614519565b60200260200101516001600160601b03166122a791906148cb565b101561233d5760405162461bcd60e51b815260206004820152606460248201819052600080516020614b5683398151915260448301527f63683a207369676e61746f7269657320646f206e6f74206f776e206174206c65908201527f617374207468726573686f6c642070657263656e74616765206f6620612071756084820152636f72756d60e01b60a482015260c4016105e2565b80612347816145de565b915050612200565b506000805463ffffffff169061236488613697565b6040805160208082018490528183018790524360e01b6001600160e01b0319166060830152825160448184030181526064830180855281519183019190912063ffffffff881660008181526001909452928590205552905191925086917fc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a9181900360840190a26123f6826001614787565b6000805463ffffffff191663ffffffff929092169190911790555050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146124625760405162461bcd60e51b81526004016105e2906148ea565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906124b09085908590600401614962565b600060405180830381600087803b1580156124ca57600080fd5b505af11580156124de573d6000803e3d6000fd5b505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461252e5760405162461bcd60e51b81526004016105e2906148ea565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401611ee6565b600254600160a81b900460ff16158080156125a457506002546001600160a01b90910460ff16105b806125c55750303b1580156125c55750600254600160a01b900460ff166001145b6125e15760405162461bcd60e51b81526004016105e2906149ad565b6002805460ff60a01b1916600160a01b179055801561260e576002805460ff60a81b1916600160a81b1790555b6126198460006136aa565b612622836135ca565b61262b82613795565b8015612673576002805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600254600160a81b900460ff16158080156126a157506002546001600160a01b90910460ff16105b806126c25750303b1580156126c25750600254600160a01b900460ff166001145b6126de5760405162461bcd60e51b81526004016105e2906149ad565b6002805460ff60a01b1916600160a01b179055801561270b576002805460ff60a81b1916600160a81b1790555b612714826135ca565b801561275d576002805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e79190614593565b60ff1690508061280557505060408051600081526020810190915290565b6000805b828110156128ba57604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289c9190614551565b6128a690836145c6565b9150806128b2816145de565b915050612809565b506000816001600160401b038111156128d5576128d5613bcb565b6040519080825280602002602001820160405280156128fe578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129879190614593565b60ff16811015612b2057604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156129fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1f9190614551565b905060005b81811015612b0b576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abd9190614610565b60000151858581518110612ad357612ad3614519565b6001600160a01b039092166020928302919091019091015283612af5816145de565b9450508080612b03906145de565b915050612a24565b50508080612b18906145de565b915050612905565b5090949350505050565b612b32613570565b6105f481613795565b612b43613570565b6001600160a01b038116612ba85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b6105f4816135ca565b606760019054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c28919061444d565b6001600160a01b0316336001600160a01b031614612c585760405162461bcd60e51b81526004016105e29061446a565b606854198119606854191614612cd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016105e2565b606881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161072f565b6001600160a01b038116612d9b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016105e2565b606754604080516001600160a01b036101009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6040805180820190915260008082526020820152612e2b613aa6565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015612e5e57612e60565bfe5b5080612e9e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016105e2565b505092915050565b6040805180820190915260008082526020820152612ec2613ac4565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015612e5e575080612e9e5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016105e2565b612f42613ae2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201909152600080825260208201526000808061302a600080516020614b368339815191528661452f565b90505b613036816137ef565b9093509150600080516020614b36833981519152828309831415613070576040805180820190915290815260208101919091529392505050565b600080516020614b3683398151915260018208905061302d565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906130bc613b07565b60005b60028110156132815760006130d58260066148cb565b90508482600281106130e9576130e9614519565b602002015151836130fb8360006145c6565b600c811061310b5761310b614519565b602002015284826002811061312257613122614519565b6020020151602001518382600161313991906145c6565b600c811061314957613149614519565b602002015283826002811061316057613160614519565b60200201515151836131738360026145c6565b600c811061318357613183614519565b602002015283826002811061319a5761319a614519565b60200201515160016020020151836131b38360036145c6565b600c81106131c3576131c3614519565b60200201528382600281106131da576131da614519565b6020020151602001516000600281106131f5576131f5614519565b6020020151836132068360046145c6565b600c811061321657613216614519565b602002015283826002811061322d5761322d614519565b60200201516020015160016002811061324857613248614519565b6020020151836132598360056145c6565b600c811061326957613269614519565b60200201525080613279816145de565b9150506130bf565b5061328a613b26565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60606000805b610100811015613304576001811b9150838216156132f457828160f81b6040516020016132e29291906149fb565b60405160208183030381529060405292505b6132fd816145de565b90506132b4565b5050919050565b60008061331784613871565b905080156133bd578260ff168460018651613332919061464f565b8151811061334257613342614519565b016020015160f81c106133bd5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016105e2565b90505b92915050565b6000805b82156133c0576133db60018461464f565b90921691806133e981614a2a565b9150506133ca565b60408051808201909152600080825260208201526102008261ffff161061344d5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016105e2565b8161ffff16600114156134615750816133c0565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff16106134ca57600161ffff871660ff83161c811614156134ad576134aa8484612ea6565b93505b6134b78384612ea6565b92506201fffe600192831b16910161347d565b509195945050505050565b604080518082019091526000808252602082015281511580156134fa57506020820151155b15613518575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020614b36833981519152846020015161354b919061452f565b61356390600080516020614b3683398151915261464f565b905292915050565b919050565b6035546001600160a01b03163314611e905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e2565b603580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061365982604080518082019091526000808252602082015250604080518082019091528151815260609091015163ffffffff16602082015290565b6040805182516020808301919091529092015163ffffffff16908201526060015b604051602081830303815290604052805190602001209050919050565b60008160405160200161367a9190614aba565b60675461010090046001600160a01b03161580156136d057506001600160a01b03821615155b6137525760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016105e2565b606881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261275d82612d0d565b600280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527ff024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c0859101612754565b60008080600080516020614b368339815191526003600080516020614b3683398151915286600080516020614b36833981519152888909090890506000613865827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020614b368339815191526139fe565b91959194509092505050565b6000610100825111156138fa5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016105e2565b815161390857506000919050565b6000808360008151811061391e5761391e614519565b0160200151600160f89190911c81901b92505b84518110156139f55784818151811061394c5761394c614519565b0160200151600160f89190911c1b91508282116139e15760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016105e2565b918117916139ee816145de565b9050613931565b50909392505050565b600080613a09613b26565b613a11613b44565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015612e5e575082613a9b5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016105e2565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280613af5613b62565b8152602001613b02613b62565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146105f457600080fd5b600060208284031215613ba757600080fd5b81356133bd81613b80565b600060208284031215613bc457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613c0357613c03613bcb565b60405290565b60405161010081016001600160401b0381118282101715613c0357613c03613bcb565b604051601f8201601f191681016001600160401b0381118282101715613c5457613c54613bcb565b604052919050565b600060408284031215613c6e57600080fd5b613c76613be1565b9050813581526020820135602082015292915050565b600082601f830112613c9d57600080fd5b613ca5613be1565b806040840185811115613cb757600080fd5b845b81811015613cd1578035845260209384019301613cb9565b509095945050505050565b600060808284031215613cee57600080fd5b613cf6613be1565b9050613d028383613c8c565b8152613d118360408401613c8c565b602082015292915050565b6000806000806101208587031215613d3357600080fd5b84359350613d448660208701613c5c565b9250613d538660608701613cdc565b9150613d628660e08701613c5c565b905092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015613dae5783516001600160a01b031683529284019291840191600101613d89565b50909695505050505050565b80151581146105f457600080fd5b600060208284031215613dda57600080fd5b81356133bd81613dba565b60ff811681146105f457600080fd5b600060208284031215613e0657600080fd5b81356133bd81613de5565b803563ffffffff8116811461356b57600080fd5b60006001600160401b03821115613e3e57613e3e613bcb565b5060051b60200190565b600082601f830112613e5957600080fd5b81356020613e6e613e6983613e25565b613c2c565b82815260059290921b84018101918181019086841115613e8d57600080fd5b8286015b84811015613eaf57613ea281613e11565b8352918301918301613e91565b509695505050505050565b600082601f830112613ecb57600080fd5b81356020613edb613e6983613e25565b82815260069290921b84018101918181019086841115613efa57600080fd5b8286015b84811015613eaf57613f108882613c5c565b835291830191604001613efe565b600082601f830112613f2f57600080fd5b81356020613f3f613e6983613e25565b82815260059290921b84018101918181019086841115613f5e57600080fd5b8286015b84811015613eaf5780356001600160401b03811115613f815760008081fd5b613f8f8986838b0101613e48565b845250918301918301613f62565b60006101808284031215613fb057600080fd5b613fb8613c09565b905081356001600160401b0380821115613fd157600080fd5b613fdd85838601613e48565b83526020840135915080821115613ff357600080fd5b613fff85838601613eba565b6020840152604084013591508082111561401857600080fd5b61402485838601613eba565b60408401526140368560608601613cdc565b60608401526140488560e08601613c5c565b608084015261012084013591508082111561406257600080fd5b61406e85838601613e48565b60a084015261014084013591508082111561408857600080fd5b61409485838601613e48565b60c08401526101608401359150808211156140ae57600080fd5b506140bb84828501613f1e565b60e08301525092915050565b6000806000806000608086880312156140df57600080fd5b8535945060208601356001600160401b03808211156140fd57600080fd5b818801915088601f83011261411157600080fd5b81358181111561412057600080fd5b89602082850101111561413257600080fd5b602083019650945061414660408901613e11565b9350606088013591508082111561415c57600080fd5b5061416988828901613f9d565b9150509295509295909350565b600081518084526020808501945080840160005b838110156141af5781516001600160601b03168752958201959082019060010161418a565b509495945050505050565b60408152600083516040808401526141d56080840182614176565b90506020850151603f198483030160608501526141f28282614176565b925050508260208301529392505050565b60006001600160401b0383111561421c5761421c613bcb565b61422f601f8401601f1916602001613c2c565b905082815283838301111561424357600080fd5b828260208301376000602084830101529392505050565b60006020828403121561426c57600080fd5b81356001600160401b0381111561428257600080fd5b8201601f8101841361429357600080fd5b6142a284823560208401614203565b949350505050565b600080604083850312156142bd57600080fd5b82356001600160401b03808211156142d457600080fd5b90840190608082870312156142e857600080fd5b909250602084013590808211156142fe57600080fd5b5061430b85828601613f9d565b9150509250929050565b600082601f83011261432657600080fd5b61433583833560208501614203565b9392505050565b6000806040838503121561434f57600080fd5b823561435a81613b80565b915060208301356001600160401b038082111561437657600080fd5b908401906060828703121561438a57600080fd5b6040516060810181811083821117156143a5576143a5613bcb565b6040528235828111156143b757600080fd5b6143c388828601614315565b82525060208301356020820152604083013560408201528093505050509250929050565b6000806000606084860312156143fc57600080fd5b833561440781613b80565b9250602084013561441781613b80565b9150604084013561442781613b80565b809150509250925092565b60006020828403121561444457600080fd5b61433582613e11565b60006020828403121561445f57600080fd5b81516133bd81613b80565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156144c657600080fd5b81516133bd81613dba565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261454c57634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561456357600080fd5b5051919050565b60006020828403121561457c57600080fd5b81516001600160c01b03811681146133bd57600080fd5b6000602082840312156145a557600080fd5b81516133bd81613de5565b634e487b7160e01b600052601160045260246000fd5b600082198211156145d9576145d96145b0565b500190565b60006000198214156145f2576145f26145b0565b5060010190565b80516001600160601b038116811461356b57600080fd5b60006040828403121561462257600080fd5b61462a613be1565b825161463581613b80565b8152614643602084016145f9565b60208201529392505050565b600082821015614661576146616145b0565b500390565b60006020828403121561467857600080fd5b815167ffffffffffffffff19811681146133bd57600080fd5b6000602082840312156146a357600080fd5b614335826145f9565b60006001600160601b03838116908316818110156146cc576146cc6145b0565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561470f578151855293820193908201906001016146f3565b5092979650505050505050565b60005b8381101561473757818101518382015260200161471f565b838111156126735750506000910152565b6000815180845261476081602086016020860161471c565b601f01601f19169290920160200192915050565b6020815260006143356020830184614748565b600063ffffffff8083168185168083038211156147a6576147a66145b0565b01949350505050565b6000608082360312156147c157600080fd5b604051608081016001600160401b0382821081831117156147e4576147e4613bcb565b8160405284358352602085013591508082111561480057600080fd5b61480c36838701614315565b6020840152604085013591508082111561482557600080fd5b5061483236828601614315565b60408301525061484460608401613e11565b606082015292915050565b6000808335601e1984360301811261486657600080fd5b8301803591506001600160401b0382111561488057600080fd5b60200191503681900382131561489557600080fd5b9250929050565b60006001600160601b03808316818516818304811182151516156148c2576148c26145b0565b02949350505050565b60008160001904831182151516156148e5576148e56145b0565b500290565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b038316815260406020820152600082516060604084015261498c60a0840182614748565b90506020840151606084015260408401516080840152809150509392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008351614a0d81846020880161471c565b6001600160f81b0319939093169190920190815260010192915050565b600061ffff80831681811415614a4257614a426145b0565b6001019392505050565b6000808335601e19843603018112614a6357600080fd5b83016020810192503590506001600160401b03811115614a8257600080fd5b80360383131561489557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152813560208201526000614ad46020840184614a4c565b60806040850152614ae960a085018284614a91565b915050614af96040850185614a4c565b848303601f19016060860152614b10838284614a91565b9250505063ffffffff614b2560608601613e11565b166080840152809150509291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47456967656e4441536572766963654d616e616765722e636f6e6669726d426174424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220a5aa791ce56437be19ec01db4c7e6d5ddf85b80196b58a7d0376c319b16c677d64736f6c634300080c0033", } // ContractEigenDAServiceManagerABI is the input ABI used to generate the binding from. @@ -82,7 +89,7 @@ var ContractEigenDAServiceManagerABI = ContractEigenDAServiceManagerMetaData.ABI var ContractEigenDAServiceManagerBin = ContractEigenDAServiceManagerMetaData.Bin // DeployContractEigenDAServiceManager deploys a new Ethereum contract, binding an instance of ContractEigenDAServiceManager to it. -func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, _registryCoordinator common.Address, _strategyManager common.Address, _delegationMananger common.Address, _slasher common.Address) (common.Address, *types.Transaction, *ContractEigenDAServiceManager, error) { +func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, __delegationMananger common.Address, __registryCoordinator common.Address, __stakeRegistry common.Address) (common.Address, *types.Transaction, *ContractEigenDAServiceManager, error) { parsed, err := ContractEigenDAServiceManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -91,7 +98,7 @@ func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.C return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenDAServiceManagerBin), backend, _registryCoordinator, _strategyManager, _delegationMananger, _slasher) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenDAServiceManagerBin), backend, __delegationMananger, __registryCoordinator, __stakeRegistry) if err != nil { return common.Address{}, nil, nil, err } @@ -333,6 +340,37 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.THRESHOLDDENOMINATOR(&_ContractEigenDAServiceManager.CallOpts) } +// BatchConfirmer is a free data retrieval call binding the contract method 0x39f309d5. +// +// Solidity: function batchConfirmer() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) BatchConfirmer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "batchConfirmer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BatchConfirmer is a free data retrieval call binding the contract method 0x39f309d5. +// +// Solidity: function batchConfirmer() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) BatchConfirmer() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.BatchConfirmer(&_ContractEigenDAServiceManager.CallOpts) +} + +// BatchConfirmer is a free data retrieval call binding the contract method 0x39f309d5. +// +// Solidity: function batchConfirmer() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) BatchConfirmer() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.BatchConfirmer(&_ContractEigenDAServiceManager.CallOpts) +} + // BatchId is a free data retrieval call binding the contract method 0x4972134a. // // Solidity: function batchId() view returns(uint32) @@ -395,12 +433,12 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.BatchIdToBatchMetadataHash(&_ContractEigenDAServiceManager.CallOpts, arg0) } -// BlsPubkeyRegistry is a free data retrieval call binding the contract method 0x3561deb1. +// BlsApkRegistry is a free data retrieval call binding the contract method 0x5df45946. // -// Solidity: function blsPubkeyRegistry() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) BlsPubkeyRegistry(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function blsApkRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) BlsApkRegistry(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "blsPubkeyRegistry") + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "blsApkRegistry") if err != nil { return *new(common.Address), err @@ -412,26 +450,26 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) BlsPu } -// BlsPubkeyRegistry is a free data retrieval call binding the contract method 0x3561deb1. +// BlsApkRegistry is a free data retrieval call binding the contract method 0x5df45946. // -// Solidity: function blsPubkeyRegistry() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) BlsPubkeyRegistry() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.BlsPubkeyRegistry(&_ContractEigenDAServiceManager.CallOpts) +// Solidity: function blsApkRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) BlsApkRegistry() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.BlsApkRegistry(&_ContractEigenDAServiceManager.CallOpts) } -// BlsPubkeyRegistry is a free data retrieval call binding the contract method 0x3561deb1. +// BlsApkRegistry is a free data retrieval call binding the contract method 0x5df45946. // -// Solidity: function blsPubkeyRegistry() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) BlsPubkeyRegistry() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.BlsPubkeyRegistry(&_ContractEigenDAServiceManager.CallOpts) +// Solidity: function blsApkRegistry() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) BlsApkRegistry() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.BlsApkRegistry(&_ContractEigenDAServiceManager.CallOpts) } // CheckSignatures is a free data retrieval call binding the contract method 0x6efb4636. // -// Solidity: function checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) view returns((uint96[],uint96[]), bytes32) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) CheckSignatures(opts *bind.CallOpts, msgHash [32]byte, quorumNumbers []byte, referenceBlockNumber uint32, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (IBLSSignatureCheckerQuorumStakeTotals, [32]byte, error) { +// Solidity: function checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) params) view returns((uint96[],uint96[]), bytes32) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) CheckSignatures(opts *bind.CallOpts, msgHash [32]byte, quorumNumbers []byte, referenceBlockNumber uint32, params IBLSSignatureCheckerNonSignerStakesAndSignature) (IBLSSignatureCheckerQuorumStakeTotals, [32]byte, error) { var out []interface{} - err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "checkSignatures", msgHash, quorumNumbers, referenceBlockNumber, nonSignerStakesAndSignature) + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "checkSignatures", msgHash, quorumNumbers, referenceBlockNumber, params) if err != nil { return *new(IBLSSignatureCheckerQuorumStakeTotals), *new([32]byte), err @@ -446,24 +484,24 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) Check // CheckSignatures is a free data retrieval call binding the contract method 0x6efb4636. // -// Solidity: function checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) view returns((uint96[],uint96[]), bytes32) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) CheckSignatures(msgHash [32]byte, quorumNumbers []byte, referenceBlockNumber uint32, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (IBLSSignatureCheckerQuorumStakeTotals, [32]byte, error) { - return _ContractEigenDAServiceManager.Contract.CheckSignatures(&_ContractEigenDAServiceManager.CallOpts, msgHash, quorumNumbers, referenceBlockNumber, nonSignerStakesAndSignature) +// Solidity: function checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) params) view returns((uint96[],uint96[]), bytes32) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) CheckSignatures(msgHash [32]byte, quorumNumbers []byte, referenceBlockNumber uint32, params IBLSSignatureCheckerNonSignerStakesAndSignature) (IBLSSignatureCheckerQuorumStakeTotals, [32]byte, error) { + return _ContractEigenDAServiceManager.Contract.CheckSignatures(&_ContractEigenDAServiceManager.CallOpts, msgHash, quorumNumbers, referenceBlockNumber, params) } // CheckSignatures is a free data retrieval call binding the contract method 0x6efb4636. // -// Solidity: function checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) nonSignerStakesAndSignature) view returns((uint96[],uint96[]), bytes32) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) CheckSignatures(msgHash [32]byte, quorumNumbers []byte, referenceBlockNumber uint32, nonSignerStakesAndSignature IBLSSignatureCheckerNonSignerStakesAndSignature) (IBLSSignatureCheckerQuorumStakeTotals, [32]byte, error) { - return _ContractEigenDAServiceManager.Contract.CheckSignatures(&_ContractEigenDAServiceManager.CallOpts, msgHash, quorumNumbers, referenceBlockNumber, nonSignerStakesAndSignature) +// Solidity: function checkSignatures(bytes32 msgHash, bytes quorumNumbers, uint32 referenceBlockNumber, (uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]) params) view returns((uint96[],uint96[]), bytes32) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) CheckSignatures(msgHash [32]byte, quorumNumbers []byte, referenceBlockNumber uint32, params IBLSSignatureCheckerNonSignerStakesAndSignature) (IBLSSignatureCheckerQuorumStakeTotals, [32]byte, error) { + return _ContractEigenDAServiceManager.Contract.CheckSignatures(&_ContractEigenDAServiceManager.CallOpts, msgHash, quorumNumbers, referenceBlockNumber, params) } -// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. // -// Solidity: function delegationManager() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) DelegationManager(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function delegation() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) Delegation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "delegationManager") + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "delegation") if err != nil { return *new(common.Address), err @@ -475,18 +513,80 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) Deleg } -// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) Delegation() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.Delegation(&_ContractEigenDAServiceManager.CallOpts) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) Delegation() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.Delegation(&_ContractEigenDAServiceManager.CallOpts) +} + +// GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. +// +// Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetOperatorRestakedStrategies(opts *bind.CallOpts, operator common.Address) ([]common.Address, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getOperatorRestakedStrategies", operator) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. // -// Solidity: function delegationManager() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) DelegationManager() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.DelegationManager(&_ContractEigenDAServiceManager.CallOpts) +// Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetOperatorRestakedStrategies(operator common.Address) ([]common.Address, error) { + return _ContractEigenDAServiceManager.Contract.GetOperatorRestakedStrategies(&_ContractEigenDAServiceManager.CallOpts, operator) } -// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. // -// Solidity: function delegationManager() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) DelegationManager() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.DelegationManager(&_ContractEigenDAServiceManager.CallOpts) +// Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetOperatorRestakedStrategies(operator common.Address) ([]common.Address, error) { + return _ContractEigenDAServiceManager.Contract.GetOperatorRestakedStrategies(&_ContractEigenDAServiceManager.CallOpts, operator) +} + +// GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. +// +// Solidity: function getRestakeableStrategies() view returns(address[]) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) GetRestakeableStrategies(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "getRestakeableStrategies") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. +// +// Solidity: function getRestakeableStrategies() view returns(address[]) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) GetRestakeableStrategies() ([]common.Address, error) { + return _ContractEigenDAServiceManager.Contract.GetRestakeableStrategies(&_ContractEigenDAServiceManager.CallOpts) +} + +// GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. +// +// Solidity: function getRestakeableStrategies() view returns(address[]) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) GetRestakeableStrategies() ([]common.Address, error) { + return _ContractEigenDAServiceManager.Contract.GetRestakeableStrategies(&_ContractEigenDAServiceManager.CallOpts) } // LatestServeUntilBlock is a free data retrieval call binding the contract method 0x758f8dba. @@ -675,37 +775,6 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.RegistryCoordinator(&_ContractEigenDAServiceManager.CallOpts) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "slasher") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) Slasher() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.Slasher(&_ContractEigenDAServiceManager.CallOpts) -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) Slasher() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.Slasher(&_ContractEigenDAServiceManager.CallOpts) -} - // StakeRegistry is a free data retrieval call binding the contract method 0x68304835. // // Solidity: function stakeRegistry() view returns(address) @@ -737,35 +806,35 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.StakeRegistry(&_ContractEigenDAServiceManager.CallOpts) } -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// StaleStakesForbidden is a free data retrieval call binding the contract method 0xb98d0908. // -// Solidity: function strategyManager() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function staleStakesForbidden() view returns(bool) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) StaleStakesForbidden(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "strategyManager") + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "staleStakesForbidden") if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// StaleStakesForbidden is a free data retrieval call binding the contract method 0xb98d0908. // -// Solidity: function strategyManager() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) StrategyManager() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.StrategyManager(&_ContractEigenDAServiceManager.CallOpts) +// Solidity: function staleStakesForbidden() view returns(bool) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) StaleStakesForbidden() (bool, error) { + return _ContractEigenDAServiceManager.Contract.StaleStakesForbidden(&_ContractEigenDAServiceManager.CallOpts) } -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// StaleStakesForbidden is a free data retrieval call binding the contract method 0xb98d0908. // -// Solidity: function strategyManager() view returns(address) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) StrategyManager() (common.Address, error) { - return _ContractEigenDAServiceManager.Contract.StrategyManager(&_ContractEigenDAServiceManager.CallOpts) +// Solidity: function staleStakesForbidden() view returns(bool) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) StaleStakesForbidden() (bool, error) { + return _ContractEigenDAServiceManager.Contract.StaleStakesForbidden(&_ContractEigenDAServiceManager.CallOpts) } // TaskNumber is a free data retrieval call binding the contract method 0x72d18e8d. @@ -865,46 +934,67 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSes return _ContractEigenDAServiceManager.Contract.ConfirmBatch(&_ContractEigenDAServiceManager.TransactOpts, batchHeader, nonSignerStakesAndSignature) } -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "deregisterOperatorFromAVS", operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.DeregisterOperatorFromAVS(&_ContractEigenDAServiceManager.TransactOpts, operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.DeregisterOperatorFromAVS(&_ContractEigenDAServiceManager.TransactOpts, operator) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function freezeOperator(address ) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) FreezeOperator(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.contract.Transact(opts, "freezeOperator", arg0) +// Solidity: function initialize(address _pauserRegistry, address _initialOwner, address _batchConfirmer) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) Initialize(opts *bind.TransactOpts, _pauserRegistry common.Address, _initialOwner common.Address, _batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "initialize", _pauserRegistry, _initialOwner, _batchConfirmer) } -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function freezeOperator(address ) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) FreezeOperator(arg0 common.Address) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.FreezeOperator(&_ContractEigenDAServiceManager.TransactOpts, arg0) +// Solidity: function initialize(address _pauserRegistry, address _initialOwner, address _batchConfirmer) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) Initialize(_pauserRegistry common.Address, _initialOwner common.Address, _batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.Initialize(&_ContractEigenDAServiceManager.TransactOpts, _pauserRegistry, _initialOwner, _batchConfirmer) } -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function freezeOperator(address ) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) FreezeOperator(arg0 common.Address) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.FreezeOperator(&_ContractEigenDAServiceManager.TransactOpts, arg0) +// Solidity: function initialize(address _pauserRegistry, address _initialOwner, address _batchConfirmer) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) Initialize(_pauserRegistry common.Address, _initialOwner common.Address, _batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.Initialize(&_ContractEigenDAServiceManager.TransactOpts, _pauserRegistry, _initialOwner, _batchConfirmer) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8. // -// Solidity: function initialize(address _pauserRegistry, address initialOwner) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) Initialize(opts *bind.TransactOpts, _pauserRegistry common.Address, initialOwner common.Address) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.contract.Transact(opts, "initialize", _pauserRegistry, initialOwner) +// Solidity: function initialize(address initialOwner) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) Initialize0(opts *bind.TransactOpts, initialOwner common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "initialize0", initialOwner) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8. // -// Solidity: function initialize(address _pauserRegistry, address initialOwner) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) Initialize(_pauserRegistry common.Address, initialOwner common.Address) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.Initialize(&_ContractEigenDAServiceManager.TransactOpts, _pauserRegistry, initialOwner) +// Solidity: function initialize(address initialOwner) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) Initialize0(initialOwner common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.Initialize0(&_ContractEigenDAServiceManager.TransactOpts, initialOwner) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8. // -// Solidity: function initialize(address _pauserRegistry, address initialOwner) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) Initialize(_pauserRegistry common.Address, initialOwner common.Address) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.Initialize(&_ContractEigenDAServiceManager.TransactOpts, _pauserRegistry, initialOwner) +// Solidity: function initialize(address initialOwner) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) Initialize0(initialOwner common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.Initialize0(&_ContractEigenDAServiceManager.TransactOpts, initialOwner) } // Pause is a paid mutator transaction binding the contract method 0x136439dd. @@ -949,88 +1039,88 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSes return _ContractEigenDAServiceManager.Contract.PauseAll(&_ContractEigenDAServiceManager.TransactOpts) } -// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205. +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. // -// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) RecordFirstStakeUpdate(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.contract.Transact(opts, "recordFirstStakeUpdate", operator, serveUntilBlock) +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) } -// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205. +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. // -// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) RecordFirstStakeUpdate(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RecordFirstStakeUpdate(&_ContractEigenDAServiceManager.TransactOpts, operator, serveUntilBlock) +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.RegisterOperatorToAVS(&_ContractEigenDAServiceManager.TransactOpts, operator, operatorSignature) } -// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205. +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. // -// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) RecordFirstStakeUpdate(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RecordFirstStakeUpdate(&_ContractEigenDAServiceManager.TransactOpts, operator, serveUntilBlock) +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.RegisterOperatorToAVS(&_ContractEigenDAServiceManager.TransactOpts, operator, operatorSignature) } -// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) RecordLastStakeUpdateAndRevokeSlashingAbility(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.contract.Transact(opts, "recordLastStakeUpdateAndRevokeSlashingAbility", operator, serveUntilBlock) +// Solidity: function renounceOwnership() returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "renounceOwnership") } -// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) RecordLastStakeUpdateAndRevokeSlashingAbility(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RecordLastStakeUpdateAndRevokeSlashingAbility(&_ContractEigenDAServiceManager.TransactOpts, operator, serveUntilBlock) +// Solidity: function renounceOwnership() returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.RenounceOwnership(&_ContractEigenDAServiceManager.TransactOpts) } -// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) RecordLastStakeUpdateAndRevokeSlashingAbility(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RecordLastStakeUpdateAndRevokeSlashingAbility(&_ContractEigenDAServiceManager.TransactOpts, operator, serveUntilBlock) +// Solidity: function renounceOwnership() returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.RenounceOwnership(&_ContractEigenDAServiceManager.TransactOpts) } -// RecordStakeUpdate is a paid mutator transaction binding the contract method 0xc747075b. +// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. // -// Solidity: function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 prevElement) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) RecordStakeUpdate(opts *bind.TransactOpts, operator common.Address, updateBlock uint32, serveUntilBlock uint32, prevElement *big.Int) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.contract.Transact(opts, "recordStakeUpdate", operator, updateBlock, serveUntilBlock, prevElement) +// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) SetBatchConfirmer(opts *bind.TransactOpts, _batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "setBatchConfirmer", _batchConfirmer) } -// RecordStakeUpdate is a paid mutator transaction binding the contract method 0xc747075b. +// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. // -// Solidity: function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 prevElement) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) RecordStakeUpdate(operator common.Address, updateBlock uint32, serveUntilBlock uint32, prevElement *big.Int) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RecordStakeUpdate(&_ContractEigenDAServiceManager.TransactOpts, operator, updateBlock, serveUntilBlock, prevElement) +// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) SetBatchConfirmer(_batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.SetBatchConfirmer(&_ContractEigenDAServiceManager.TransactOpts, _batchConfirmer) } -// RecordStakeUpdate is a paid mutator transaction binding the contract method 0xc747075b. +// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. // -// Solidity: function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 prevElement) returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) RecordStakeUpdate(operator common.Address, updateBlock uint32, serveUntilBlock uint32, prevElement *big.Int) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RecordStakeUpdate(&_ContractEigenDAServiceManager.TransactOpts, operator, updateBlock, serveUntilBlock, prevElement) +// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) SetBatchConfirmer(_batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.SetBatchConfirmer(&_ContractEigenDAServiceManager.TransactOpts, _batchConfirmer) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// SetMetadataURI is a paid mutator transaction binding the contract method 0x750521f5. // -// Solidity: function renounceOwnership() returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContractEigenDAServiceManager.contract.Transact(opts, "renounceOwnership") +// Solidity: function setMetadataURI(string _metadataURI) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) SetMetadataURI(opts *bind.TransactOpts, _metadataURI string) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "setMetadataURI", _metadataURI) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// SetMetadataURI is a paid mutator transaction binding the contract method 0x750521f5. // -// Solidity: function renounceOwnership() returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) RenounceOwnership() (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RenounceOwnership(&_ContractEigenDAServiceManager.TransactOpts) +// Solidity: function setMetadataURI(string _metadataURI) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) SetMetadataURI(_metadataURI string) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.SetMetadataURI(&_ContractEigenDAServiceManager.TransactOpts, _metadataURI) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// SetMetadataURI is a paid mutator transaction binding the contract method 0x750521f5. // -// Solidity: function renounceOwnership() returns() -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ContractEigenDAServiceManager.Contract.RenounceOwnership(&_ContractEigenDAServiceManager.TransactOpts) +// Solidity: function setMetadataURI(string _metadataURI) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) SetMetadataURI(_metadataURI string) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.SetMetadataURI(&_ContractEigenDAServiceManager.TransactOpts, _metadataURI) } // SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. @@ -1054,6 +1144,27 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSes return _ContractEigenDAServiceManager.Contract.SetPauserRegistry(&_ContractEigenDAServiceManager.TransactOpts, newPauserRegistry) } +// SetStaleStakesForbidden is a paid mutator transaction binding the contract method 0x416c7e5e. +// +// Solidity: function setStaleStakesForbidden(bool value) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactor) SetStaleStakesForbidden(opts *bind.TransactOpts, value bool) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.contract.Transact(opts, "setStaleStakesForbidden", value) +} + +// SetStaleStakesForbidden is a paid mutator transaction binding the contract method 0x416c7e5e. +// +// Solidity: function setStaleStakesForbidden(bool value) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) SetStaleStakesForbidden(value bool) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.SetStaleStakesForbidden(&_ContractEigenDAServiceManager.TransactOpts, value) +} + +// SetStaleStakesForbidden is a paid mutator transaction binding the contract method 0x416c7e5e. +// +// Solidity: function setStaleStakesForbidden(bool value) returns() +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerTransactorSession) SetStaleStakesForbidden(value bool) (*types.Transaction, error) { + return _ContractEigenDAServiceManager.Contract.SetStaleStakesForbidden(&_ContractEigenDAServiceManager.TransactOpts, value) +} + // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -1167,13 +1278,12 @@ func (it *ContractEigenDAServiceManagerBatchConfirmedIterator) Close() error { type ContractEigenDAServiceManagerBatchConfirmed struct { BatchHeaderHash [32]byte BatchId uint32 - Fee *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBatchConfirmed is a free log retrieval operation binding the contract event 0x2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d63. +// FilterBatchConfirmed is a free log retrieval operation binding the contract event 0xc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a. // -// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId, uint96 fee) +// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId) func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) FilterBatchConfirmed(opts *bind.FilterOpts, batchHeaderHash [][32]byte) (*ContractEigenDAServiceManagerBatchConfirmedIterator, error) { var batchHeaderHashRule []interface{} @@ -1188,9 +1298,9 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Fil return &ContractEigenDAServiceManagerBatchConfirmedIterator{contract: _ContractEigenDAServiceManager.contract, event: "BatchConfirmed", logs: logs, sub: sub}, nil } -// WatchBatchConfirmed is a free log subscription operation binding the contract event 0x2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d63. +// WatchBatchConfirmed is a free log subscription operation binding the contract event 0xc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a. // -// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId, uint96 fee) +// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId) func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) WatchBatchConfirmed(opts *bind.WatchOpts, sink chan<- *ContractEigenDAServiceManagerBatchConfirmed, batchHeaderHash [][32]byte) (event.Subscription, error) { var batchHeaderHashRule []interface{} @@ -1230,9 +1340,9 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Wat }), nil } -// ParseBatchConfirmed is a log parse operation binding the contract event 0x2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d63. +// ParseBatchConfirmed is a log parse operation binding the contract event 0xc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a. // -// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId, uint96 fee) +// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId) func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) ParseBatchConfirmed(log types.Log) (*ContractEigenDAServiceManagerBatchConfirmed, error) { event := new(ContractEigenDAServiceManagerBatchConfirmed) if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "BatchConfirmed", log); err != nil { @@ -1242,9 +1352,9 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Par return event, nil } -// ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator is returned from FilterFeePerBytePerTimeSet and is used to iterate over the raw logs and unpacked data for FeePerBytePerTimeSet events raised by the ContractEigenDAServiceManager contract. -type ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator struct { - Event *ContractEigenDAServiceManagerFeePerBytePerTimeSet // Event containing the contract specifics and raw log +// ContractEigenDAServiceManagerBatchConfirmerChangedIterator is returned from FilterBatchConfirmerChanged and is used to iterate over the raw logs and unpacked data for BatchConfirmerChanged events raised by the ContractEigenDAServiceManager contract. +type ContractEigenDAServiceManagerBatchConfirmerChangedIterator struct { + Event *ContractEigenDAServiceManagerBatchConfirmerChanged // 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 @@ -1258,7 +1368,7 @@ type ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator struct { // 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 *ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator) Next() bool { +func (it *ContractEigenDAServiceManagerBatchConfirmerChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1267,7 +1377,7 @@ func (it *ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(ContractEigenDAServiceManagerFeePerBytePerTimeSet) + it.Event = new(ContractEigenDAServiceManagerBatchConfirmerChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1282,7 +1392,7 @@ func (it *ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractEigenDAServiceManagerFeePerBytePerTimeSet) + it.Event = new(ContractEigenDAServiceManagerBatchConfirmerChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1298,177 +1408,42 @@ func (it *ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator) Error() error { +func (it *ContractEigenDAServiceManagerBatchConfirmerChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator) Close() error { +func (it *ContractEigenDAServiceManagerBatchConfirmerChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractEigenDAServiceManagerFeePerBytePerTimeSet represents a FeePerBytePerTimeSet event raised by the ContractEigenDAServiceManager contract. -type ContractEigenDAServiceManagerFeePerBytePerTimeSet struct { - PreviousValue *big.Int - NewValue *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeePerBytePerTimeSet is a free log retrieval operation binding the contract event 0xcd1b2c2a220284accd1f9effd811cdecb6beaa4638618b48bbea07ce7ae16996. -// -// Solidity: event FeePerBytePerTimeSet(uint256 previousValue, uint256 newValue) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) FilterFeePerBytePerTimeSet(opts *bind.FilterOpts) (*ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator, error) { - - logs, sub, err := _ContractEigenDAServiceManager.contract.FilterLogs(opts, "FeePerBytePerTimeSet") - if err != nil { - return nil, err - } - return &ContractEigenDAServiceManagerFeePerBytePerTimeSetIterator{contract: _ContractEigenDAServiceManager.contract, event: "FeePerBytePerTimeSet", logs: logs, sub: sub}, nil -} - -// WatchFeePerBytePerTimeSet is a free log subscription operation binding the contract event 0xcd1b2c2a220284accd1f9effd811cdecb6beaa4638618b48bbea07ce7ae16996. -// -// Solidity: event FeePerBytePerTimeSet(uint256 previousValue, uint256 newValue) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) WatchFeePerBytePerTimeSet(opts *bind.WatchOpts, sink chan<- *ContractEigenDAServiceManagerFeePerBytePerTimeSet) (event.Subscription, error) { - - logs, sub, err := _ContractEigenDAServiceManager.contract.WatchLogs(opts, "FeePerBytePerTimeSet") - 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(ContractEigenDAServiceManagerFeePerBytePerTimeSet) - if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "FeePerBytePerTimeSet", 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 -} - -// ParseFeePerBytePerTimeSet is a log parse operation binding the contract event 0xcd1b2c2a220284accd1f9effd811cdecb6beaa4638618b48bbea07ce7ae16996. -// -// Solidity: event FeePerBytePerTimeSet(uint256 previousValue, uint256 newValue) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) ParseFeePerBytePerTimeSet(log types.Log) (*ContractEigenDAServiceManagerFeePerBytePerTimeSet, error) { - event := new(ContractEigenDAServiceManagerFeePerBytePerTimeSet) - if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "FeePerBytePerTimeSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractEigenDAServiceManagerFeeSetterChangedIterator is returned from FilterFeeSetterChanged and is used to iterate over the raw logs and unpacked data for FeeSetterChanged events raised by the ContractEigenDAServiceManager contract. -type ContractEigenDAServiceManagerFeeSetterChangedIterator struct { - Event *ContractEigenDAServiceManagerFeeSetterChanged // 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 *ContractEigenDAServiceManagerFeeSetterChangedIterator) 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(ContractEigenDAServiceManagerFeeSetterChanged) - 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(ContractEigenDAServiceManagerFeeSetterChanged) - 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 *ContractEigenDAServiceManagerFeeSetterChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractEigenDAServiceManagerFeeSetterChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractEigenDAServiceManagerFeeSetterChanged represents a FeeSetterChanged event raised by the ContractEigenDAServiceManager contract. -type ContractEigenDAServiceManagerFeeSetterChanged struct { +// ContractEigenDAServiceManagerBatchConfirmerChanged represents a BatchConfirmerChanged event raised by the ContractEigenDAServiceManager contract. +type ContractEigenDAServiceManagerBatchConfirmerChanged struct { PreviousAddress common.Address NewAddress common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterFeeSetterChanged is a free log retrieval operation binding the contract event 0x774b126b94b3cc801460a024dd575406c3ebf27affd7c36198a53ac6655f056d. +// FilterBatchConfirmerChanged is a free log retrieval operation binding the contract event 0xf024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c085. // -// Solidity: event FeeSetterChanged(address previousAddress, address newAddress) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) FilterFeeSetterChanged(opts *bind.FilterOpts) (*ContractEigenDAServiceManagerFeeSetterChangedIterator, error) { +// Solidity: event BatchConfirmerChanged(address previousAddress, address newAddress) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) FilterBatchConfirmerChanged(opts *bind.FilterOpts) (*ContractEigenDAServiceManagerBatchConfirmerChangedIterator, error) { - logs, sub, err := _ContractEigenDAServiceManager.contract.FilterLogs(opts, "FeeSetterChanged") + logs, sub, err := _ContractEigenDAServiceManager.contract.FilterLogs(opts, "BatchConfirmerChanged") if err != nil { return nil, err } - return &ContractEigenDAServiceManagerFeeSetterChangedIterator{contract: _ContractEigenDAServiceManager.contract, event: "FeeSetterChanged", logs: logs, sub: sub}, nil + return &ContractEigenDAServiceManagerBatchConfirmerChangedIterator{contract: _ContractEigenDAServiceManager.contract, event: "BatchConfirmerChanged", logs: logs, sub: sub}, nil } -// WatchFeeSetterChanged is a free log subscription operation binding the contract event 0x774b126b94b3cc801460a024dd575406c3ebf27affd7c36198a53ac6655f056d. +// WatchBatchConfirmerChanged is a free log subscription operation binding the contract event 0xf024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c085. // -// Solidity: event FeeSetterChanged(address previousAddress, address newAddress) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) WatchFeeSetterChanged(opts *bind.WatchOpts, sink chan<- *ContractEigenDAServiceManagerFeeSetterChanged) (event.Subscription, error) { +// Solidity: event BatchConfirmerChanged(address previousAddress, address newAddress) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) WatchBatchConfirmerChanged(opts *bind.WatchOpts, sink chan<- *ContractEigenDAServiceManagerBatchConfirmerChanged) (event.Subscription, error) { - logs, sub, err := _ContractEigenDAServiceManager.contract.WatchLogs(opts, "FeeSetterChanged") + logs, sub, err := _ContractEigenDAServiceManager.contract.WatchLogs(opts, "BatchConfirmerChanged") if err != nil { return nil, err } @@ -1478,8 +1453,8 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Wat select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractEigenDAServiceManagerFeeSetterChanged) - if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "FeeSetterChanged", log); err != nil { + event := new(ContractEigenDAServiceManagerBatchConfirmerChanged) + if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "BatchConfirmerChanged", log); err != nil { return err } event.Raw = log @@ -1500,12 +1475,12 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Wat }), nil } -// ParseFeeSetterChanged is a log parse operation binding the contract event 0x774b126b94b3cc801460a024dd575406c3ebf27affd7c36198a53ac6655f056d. +// ParseBatchConfirmerChanged is a log parse operation binding the contract event 0xf024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c085. // -// Solidity: event FeeSetterChanged(address previousAddress, address newAddress) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) ParseFeeSetterChanged(log types.Log) (*ContractEigenDAServiceManagerFeeSetterChanged, error) { - event := new(ContractEigenDAServiceManagerFeeSetterChanged) - if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "FeeSetterChanged", log); err != nil { +// Solidity: event BatchConfirmerChanged(address previousAddress, address newAddress) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) ParseBatchConfirmerChanged(log types.Log) (*ContractEigenDAServiceManagerBatchConfirmerChanged, error) { + event := new(ContractEigenDAServiceManagerBatchConfirmerChanged) + if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "BatchConfirmerChanged", log); err != nil { return nil, err } event.Raw = log @@ -2079,9 +2054,9 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Par return event, nil } -// ContractEigenDAServiceManagerPaymentManagerSetIterator is returned from FilterPaymentManagerSet and is used to iterate over the raw logs and unpacked data for PaymentManagerSet events raised by the ContractEigenDAServiceManager contract. -type ContractEigenDAServiceManagerPaymentManagerSetIterator struct { - Event *ContractEigenDAServiceManagerPaymentManagerSet // Event containing the contract specifics and raw log +// ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator is returned from FilterStaleStakesForbiddenUpdate and is used to iterate over the raw logs and unpacked data for StaleStakesForbiddenUpdate events raised by the ContractEigenDAServiceManager contract. +type ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator struct { + Event *ContractEigenDAServiceManagerStaleStakesForbiddenUpdate // 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 @@ -2095,7 +2070,7 @@ type ContractEigenDAServiceManagerPaymentManagerSetIterator struct { // 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 *ContractEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { +func (it *ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2104,7 +2079,7 @@ func (it *ContractEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractEigenDAServiceManagerPaymentManagerSet) + it.Event = new(ContractEigenDAServiceManagerStaleStakesForbiddenUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2119,7 +2094,7 @@ func (it *ContractEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractEigenDAServiceManagerPaymentManagerSet) + it.Event = new(ContractEigenDAServiceManagerStaleStakesForbiddenUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2135,42 +2110,41 @@ func (it *ContractEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractEigenDAServiceManagerPaymentManagerSetIterator) Error() error { +func (it *ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractEigenDAServiceManagerPaymentManagerSetIterator) Close() error { +func (it *ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractEigenDAServiceManagerPaymentManagerSet represents a PaymentManagerSet event raised by the ContractEigenDAServiceManager contract. -type ContractEigenDAServiceManagerPaymentManagerSet struct { - PreviousAddress common.Address - NewAddress common.Address - Raw types.Log // Blockchain specific contextual infos +// ContractEigenDAServiceManagerStaleStakesForbiddenUpdate represents a StaleStakesForbiddenUpdate event raised by the ContractEigenDAServiceManager contract. +type ContractEigenDAServiceManagerStaleStakesForbiddenUpdate struct { + Value bool + Raw types.Log // Blockchain specific contextual infos } -// FilterPaymentManagerSet is a free log retrieval operation binding the contract event 0xa3044efb81dffce20bbf49cae117f167852a973364ae504dfade51a8d022c95a. +// FilterStaleStakesForbiddenUpdate is a free log retrieval operation binding the contract event 0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc. // -// Solidity: event PaymentManagerSet(address previousAddress, address newAddress) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) FilterPaymentManagerSet(opts *bind.FilterOpts) (*ContractEigenDAServiceManagerPaymentManagerSetIterator, error) { +// Solidity: event StaleStakesForbiddenUpdate(bool value) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) FilterStaleStakesForbiddenUpdate(opts *bind.FilterOpts) (*ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator, error) { - logs, sub, err := _ContractEigenDAServiceManager.contract.FilterLogs(opts, "PaymentManagerSet") + logs, sub, err := _ContractEigenDAServiceManager.contract.FilterLogs(opts, "StaleStakesForbiddenUpdate") if err != nil { return nil, err } - return &ContractEigenDAServiceManagerPaymentManagerSetIterator{contract: _ContractEigenDAServiceManager.contract, event: "PaymentManagerSet", logs: logs, sub: sub}, nil + return &ContractEigenDAServiceManagerStaleStakesForbiddenUpdateIterator{contract: _ContractEigenDAServiceManager.contract, event: "StaleStakesForbiddenUpdate", logs: logs, sub: sub}, nil } -// WatchPaymentManagerSet is a free log subscription operation binding the contract event 0xa3044efb81dffce20bbf49cae117f167852a973364ae504dfade51a8d022c95a. +// WatchStaleStakesForbiddenUpdate is a free log subscription operation binding the contract event 0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc. // -// Solidity: event PaymentManagerSet(address previousAddress, address newAddress) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) WatchPaymentManagerSet(opts *bind.WatchOpts, sink chan<- *ContractEigenDAServiceManagerPaymentManagerSet) (event.Subscription, error) { +// Solidity: event StaleStakesForbiddenUpdate(bool value) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) WatchStaleStakesForbiddenUpdate(opts *bind.WatchOpts, sink chan<- *ContractEigenDAServiceManagerStaleStakesForbiddenUpdate) (event.Subscription, error) { - logs, sub, err := _ContractEigenDAServiceManager.contract.WatchLogs(opts, "PaymentManagerSet") + logs, sub, err := _ContractEigenDAServiceManager.contract.WatchLogs(opts, "StaleStakesForbiddenUpdate") if err != nil { return nil, err } @@ -2180,8 +2154,8 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Wat select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractEigenDAServiceManagerPaymentManagerSet) - if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "PaymentManagerSet", log); err != nil { + event := new(ContractEigenDAServiceManagerStaleStakesForbiddenUpdate) + if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "StaleStakesForbiddenUpdate", log); err != nil { return err } event.Raw = log @@ -2202,12 +2176,12 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) Wat }), nil } -// ParsePaymentManagerSet is a log parse operation binding the contract event 0xa3044efb81dffce20bbf49cae117f167852a973364ae504dfade51a8d022c95a. +// ParseStaleStakesForbiddenUpdate is a log parse operation binding the contract event 0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc. // -// Solidity: event PaymentManagerSet(address previousAddress, address newAddress) -func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) ParsePaymentManagerSet(log types.Log) (*ContractEigenDAServiceManagerPaymentManagerSet, error) { - event := new(ContractEigenDAServiceManagerPaymentManagerSet) - if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "PaymentManagerSet", log); err != nil { +// Solidity: event StaleStakesForbiddenUpdate(bool value) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerFilterer) ParseStaleStakesForbiddenUpdate(log types.Log) (*ContractEigenDAServiceManagerStaleStakesForbiddenUpdate, error) { + event := new(ContractEigenDAServiceManagerStaleStakesForbiddenUpdate) + if err := _ContractEigenDAServiceManager.contract.UnpackLog(event, "StaleStakesForbiddenUpdate", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/bindings/IEigenDAServiceManager/binding.go b/contracts/bindings/IEigenDAServiceManager/binding.go index 25572168c..1d595e5c6 100644 --- a/contracts/bindings/IEigenDAServiceManager/binding.go +++ b/contracts/bindings/IEigenDAServiceManager/binding.go @@ -61,9 +61,16 @@ type IEigenDAServiceManagerBatchHeader struct { ReferenceBlockNumber uint32 } +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + // ContractIEigenDAServiceManagerMetaData contains all meta data concerning the ContractIEigenDAServiceManager contract. var ContractIEigenDAServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentages\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"fee\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeePerBytePerTimeSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeSetterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PaymentManagerSet\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentages\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]", } // ContractIEigenDAServiceManagerABI is the input ABI used to generate the binding from. @@ -274,66 +281,128 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSessi return _ContractIEigenDAServiceManager.Contract.BatchIdToBatchMetadataHash(&_ContractIEigenDAServiceManager.CallOpts, batchId) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. +// +// Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetOperatorRestakedStrategies(opts *bind.CallOpts, operator common.Address) ([]common.Address, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getOperatorRestakedStrategies", operator) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. +// +// Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetOperatorRestakedStrategies(operator common.Address) ([]common.Address, error) { + return _ContractIEigenDAServiceManager.Contract.GetOperatorRestakedStrategies(&_ContractIEigenDAServiceManager.CallOpts, operator) +} + +// GetOperatorRestakedStrategies is a free data retrieval call binding the contract method 0x33cfb7b7. +// +// Solidity: function getOperatorRestakedStrategies(address operator) view returns(address[]) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetOperatorRestakedStrategies(operator common.Address) ([]common.Address, error) { + return _ContractIEigenDAServiceManager.Contract.GetOperatorRestakedStrategies(&_ContractIEigenDAServiceManager.CallOpts, operator) +} + +// GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. // -// Solidity: function owner() view returns(address) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function getRestakeableStrategies() view returns(address[]) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) GetRestakeableStrategies(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} - err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "owner") + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "getRestakeableStrategies") if err != nil { - return *new(common.Address), err + return *new([]common.Address), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. // -// Solidity: function owner() view returns(address) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) Owner() (common.Address, error) { - return _ContractIEigenDAServiceManager.Contract.Owner(&_ContractIEigenDAServiceManager.CallOpts) +// Solidity: function getRestakeableStrategies() view returns(address[]) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) GetRestakeableStrategies() ([]common.Address, error) { + return _ContractIEigenDAServiceManager.Contract.GetRestakeableStrategies(&_ContractIEigenDAServiceManager.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetRestakeableStrategies is a free data retrieval call binding the contract method 0xe481af9d. // -// Solidity: function owner() view returns(address) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) Owner() (common.Address, error) { - return _ContractIEigenDAServiceManager.Contract.Owner(&_ContractIEigenDAServiceManager.CallOpts) +// Solidity: function getRestakeableStrategies() view returns(address[]) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) GetRestakeableStrategies() ([]common.Address, error) { + return _ContractIEigenDAServiceManager.Contract.GetRestakeableStrategies(&_ContractIEigenDAServiceManager.CallOpts) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// LatestServeUntilBlock is a free data retrieval call binding the contract method 0x758f8dba. // -// Solidity: function slasher() view returns(address) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function latestServeUntilBlock() view returns(uint32) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) LatestServeUntilBlock(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "slasher") + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "latestServeUntilBlock") if err != nil { - return *new(common.Address), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// LatestServeUntilBlock is a free data retrieval call binding the contract method 0x758f8dba. // -// Solidity: function slasher() view returns(address) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) Slasher() (common.Address, error) { - return _ContractIEigenDAServiceManager.Contract.Slasher(&_ContractIEigenDAServiceManager.CallOpts) +// Solidity: function latestServeUntilBlock() view returns(uint32) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) LatestServeUntilBlock() (uint32, error) { + return _ContractIEigenDAServiceManager.Contract.LatestServeUntilBlock(&_ContractIEigenDAServiceManager.CallOpts) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// LatestServeUntilBlock is a free data retrieval call binding the contract method 0x758f8dba. // -// Solidity: function slasher() view returns(address) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) Slasher() (common.Address, error) { - return _ContractIEigenDAServiceManager.Contract.Slasher(&_ContractIEigenDAServiceManager.CallOpts) +// Solidity: function latestServeUntilBlock() view returns(uint32) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) LatestServeUntilBlock() (uint32, error) { + return _ContractIEigenDAServiceManager.Contract.LatestServeUntilBlock(&_ContractIEigenDAServiceManager.CallOpts) +} + +// TaskNumber is a free data retrieval call binding the contract method 0x72d18e8d. +// +// Solidity: function taskNumber() view returns(uint32) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCaller) TaskNumber(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ContractIEigenDAServiceManager.contract.Call(opts, &out, "taskNumber") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// TaskNumber is a free data retrieval call binding the contract method 0x72d18e8d. +// +// Solidity: function taskNumber() view returns(uint32) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) TaskNumber() (uint32, error) { + return _ContractIEigenDAServiceManager.Contract.TaskNumber(&_ContractIEigenDAServiceManager.CallOpts) +} + +// TaskNumber is a free data retrieval call binding the contract method 0x72d18e8d. +// +// Solidity: function taskNumber() view returns(uint32) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerCallerSession) TaskNumber() (uint32, error) { + return _ContractIEigenDAServiceManager.Contract.TaskNumber(&_ContractIEigenDAServiceManager.CallOpts) } // ConfirmBatch is a paid mutator transaction binding the contract method 0x7794965a. @@ -357,25 +426,88 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorS return _ContractIEigenDAServiceManager.Contract.ConfirmBatch(&_ContractIEigenDAServiceManager.TransactOpts, batchHeader, nonSignerStakesAndSignature) } -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.contract.Transact(opts, "deregisterOperatorFromAVS", operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.DeregisterOperatorFromAVS(&_ContractIEigenDAServiceManager.TransactOpts, operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. // -// Solidity: function freezeOperator(address operator) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) FreezeOperator(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { - return _ContractIEigenDAServiceManager.contract.Transact(opts, "freezeOperator", operator) +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.DeregisterOperatorFromAVS(&_ContractIEigenDAServiceManager.TransactOpts, operator) } -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. // -// Solidity: function freezeOperator(address operator) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) FreezeOperator(operator common.Address) (*types.Transaction, error) { - return _ContractIEigenDAServiceManager.Contract.FreezeOperator(&_ContractIEigenDAServiceManager.TransactOpts, operator) +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) } -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. // -// Solidity: function freezeOperator(address operator) returns() -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) FreezeOperator(operator common.Address) (*types.Transaction, error) { - return _ContractIEigenDAServiceManager.Contract.FreezeOperator(&_ContractIEigenDAServiceManager.TransactOpts, operator) +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.RegisterOperatorToAVS(&_ContractIEigenDAServiceManager.TransactOpts, operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.RegisterOperatorToAVS(&_ContractIEigenDAServiceManager.TransactOpts, operator, operatorSignature) +} + +// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. +// +// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) SetBatchConfirmer(opts *bind.TransactOpts, _batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.contract.Transact(opts, "setBatchConfirmer", _batchConfirmer) +} + +// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. +// +// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) SetBatchConfirmer(_batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.SetBatchConfirmer(&_ContractIEigenDAServiceManager.TransactOpts, _batchConfirmer) +} + +// SetBatchConfirmer is a paid mutator transaction binding the contract method 0xf1220983. +// +// Solidity: function setBatchConfirmer(address _batchConfirmer) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) SetBatchConfirmer(_batchConfirmer common.Address) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.SetBatchConfirmer(&_ContractIEigenDAServiceManager.TransactOpts, _batchConfirmer) +} + +// SetMetadataURI is a paid mutator transaction binding the contract method 0x750521f5. +// +// Solidity: function setMetadataURI(string _metadataURI) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactor) SetMetadataURI(opts *bind.TransactOpts, _metadataURI string) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.contract.Transact(opts, "setMetadataURI", _metadataURI) +} + +// SetMetadataURI is a paid mutator transaction binding the contract method 0x750521f5. +// +// Solidity: function setMetadataURI(string _metadataURI) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerSession) SetMetadataURI(_metadataURI string) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.SetMetadataURI(&_ContractIEigenDAServiceManager.TransactOpts, _metadataURI) +} + +// SetMetadataURI is a paid mutator transaction binding the contract method 0x750521f5. +// +// Solidity: function setMetadataURI(string _metadataURI) returns() +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerTransactorSession) SetMetadataURI(_metadataURI string) (*types.Transaction, error) { + return _ContractIEigenDAServiceManager.Contract.SetMetadataURI(&_ContractIEigenDAServiceManager.TransactOpts, _metadataURI) } // ContractIEigenDAServiceManagerBatchConfirmedIterator is returned from FilterBatchConfirmed and is used to iterate over the raw logs and unpacked data for BatchConfirmed events raised by the ContractIEigenDAServiceManager contract. @@ -449,13 +581,12 @@ func (it *ContractIEigenDAServiceManagerBatchConfirmedIterator) Close() error { type ContractIEigenDAServiceManagerBatchConfirmed struct { BatchHeaderHash [32]byte BatchId uint32 - Fee *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterBatchConfirmed is a free log retrieval operation binding the contract event 0x2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d63. +// FilterBatchConfirmed is a free log retrieval operation binding the contract event 0xc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a. // -// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId, uint96 fee) +// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId) func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) FilterBatchConfirmed(opts *bind.FilterOpts, batchHeaderHash [][32]byte) (*ContractIEigenDAServiceManagerBatchConfirmedIterator, error) { var batchHeaderHashRule []interface{} @@ -470,9 +601,9 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) F return &ContractIEigenDAServiceManagerBatchConfirmedIterator{contract: _ContractIEigenDAServiceManager.contract, event: "BatchConfirmed", logs: logs, sub: sub}, nil } -// WatchBatchConfirmed is a free log subscription operation binding the contract event 0x2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d63. +// WatchBatchConfirmed is a free log subscription operation binding the contract event 0xc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a. // -// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId, uint96 fee) +// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId) func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) WatchBatchConfirmed(opts *bind.WatchOpts, sink chan<- *ContractIEigenDAServiceManagerBatchConfirmed, batchHeaderHash [][32]byte) (event.Subscription, error) { var batchHeaderHashRule []interface{} @@ -512,9 +643,9 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) W }), nil } -// ParseBatchConfirmed is a log parse operation binding the contract event 0x2eaa707a79ac1f835863f5a6fdb5f27c0e295dc23adf970a445cd87d126c4d63. +// ParseBatchConfirmed is a log parse operation binding the contract event 0xc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a. // -// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId, uint96 fee) +// Solidity: event BatchConfirmed(bytes32 indexed batchHeaderHash, uint32 batchId) func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) ParseBatchConfirmed(log types.Log) (*ContractIEigenDAServiceManagerBatchConfirmed, error) { event := new(ContractIEigenDAServiceManagerBatchConfirmed) if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "BatchConfirmed", log); err != nil { @@ -524,279 +655,9 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) P return event, nil } -// ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator is returned from FilterFeePerBytePerTimeSet and is used to iterate over the raw logs and unpacked data for FeePerBytePerTimeSet events raised by the ContractIEigenDAServiceManager contract. -type ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator struct { - Event *ContractIEigenDAServiceManagerFeePerBytePerTimeSet // 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 *ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator) 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(ContractIEigenDAServiceManagerFeePerBytePerTimeSet) - 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(ContractIEigenDAServiceManagerFeePerBytePerTimeSet) - 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 *ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractIEigenDAServiceManagerFeePerBytePerTimeSet represents a FeePerBytePerTimeSet event raised by the ContractIEigenDAServiceManager contract. -type ContractIEigenDAServiceManagerFeePerBytePerTimeSet struct { - PreviousValue *big.Int - NewValue *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeePerBytePerTimeSet is a free log retrieval operation binding the contract event 0xcd1b2c2a220284accd1f9effd811cdecb6beaa4638618b48bbea07ce7ae16996. -// -// Solidity: event FeePerBytePerTimeSet(uint256 previousValue, uint256 newValue) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) FilterFeePerBytePerTimeSet(opts *bind.FilterOpts) (*ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator, error) { - - logs, sub, err := _ContractIEigenDAServiceManager.contract.FilterLogs(opts, "FeePerBytePerTimeSet") - if err != nil { - return nil, err - } - return &ContractIEigenDAServiceManagerFeePerBytePerTimeSetIterator{contract: _ContractIEigenDAServiceManager.contract, event: "FeePerBytePerTimeSet", logs: logs, sub: sub}, nil -} - -// WatchFeePerBytePerTimeSet is a free log subscription operation binding the contract event 0xcd1b2c2a220284accd1f9effd811cdecb6beaa4638618b48bbea07ce7ae16996. -// -// Solidity: event FeePerBytePerTimeSet(uint256 previousValue, uint256 newValue) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) WatchFeePerBytePerTimeSet(opts *bind.WatchOpts, sink chan<- *ContractIEigenDAServiceManagerFeePerBytePerTimeSet) (event.Subscription, error) { - - logs, sub, err := _ContractIEigenDAServiceManager.contract.WatchLogs(opts, "FeePerBytePerTimeSet") - 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(ContractIEigenDAServiceManagerFeePerBytePerTimeSet) - if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "FeePerBytePerTimeSet", 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 -} - -// ParseFeePerBytePerTimeSet is a log parse operation binding the contract event 0xcd1b2c2a220284accd1f9effd811cdecb6beaa4638618b48bbea07ce7ae16996. -// -// Solidity: event FeePerBytePerTimeSet(uint256 previousValue, uint256 newValue) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) ParseFeePerBytePerTimeSet(log types.Log) (*ContractIEigenDAServiceManagerFeePerBytePerTimeSet, error) { - event := new(ContractIEigenDAServiceManagerFeePerBytePerTimeSet) - if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "FeePerBytePerTimeSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractIEigenDAServiceManagerFeeSetterChangedIterator is returned from FilterFeeSetterChanged and is used to iterate over the raw logs and unpacked data for FeeSetterChanged events raised by the ContractIEigenDAServiceManager contract. -type ContractIEigenDAServiceManagerFeeSetterChangedIterator struct { - Event *ContractIEigenDAServiceManagerFeeSetterChanged // 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 *ContractIEigenDAServiceManagerFeeSetterChangedIterator) 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(ContractIEigenDAServiceManagerFeeSetterChanged) - 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(ContractIEigenDAServiceManagerFeeSetterChanged) - 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 *ContractIEigenDAServiceManagerFeeSetterChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractIEigenDAServiceManagerFeeSetterChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractIEigenDAServiceManagerFeeSetterChanged represents a FeeSetterChanged event raised by the ContractIEigenDAServiceManager contract. -type ContractIEigenDAServiceManagerFeeSetterChanged struct { - PreviousAddress common.Address - NewAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeeSetterChanged is a free log retrieval operation binding the contract event 0x774b126b94b3cc801460a024dd575406c3ebf27affd7c36198a53ac6655f056d. -// -// Solidity: event FeeSetterChanged(address previousAddress, address newAddress) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) FilterFeeSetterChanged(opts *bind.FilterOpts) (*ContractIEigenDAServiceManagerFeeSetterChangedIterator, error) { - - logs, sub, err := _ContractIEigenDAServiceManager.contract.FilterLogs(opts, "FeeSetterChanged") - if err != nil { - return nil, err - } - return &ContractIEigenDAServiceManagerFeeSetterChangedIterator{contract: _ContractIEigenDAServiceManager.contract, event: "FeeSetterChanged", logs: logs, sub: sub}, nil -} - -// WatchFeeSetterChanged is a free log subscription operation binding the contract event 0x774b126b94b3cc801460a024dd575406c3ebf27affd7c36198a53ac6655f056d. -// -// Solidity: event FeeSetterChanged(address previousAddress, address newAddress) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) WatchFeeSetterChanged(opts *bind.WatchOpts, sink chan<- *ContractIEigenDAServiceManagerFeeSetterChanged) (event.Subscription, error) { - - logs, sub, err := _ContractIEigenDAServiceManager.contract.WatchLogs(opts, "FeeSetterChanged") - 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(ContractIEigenDAServiceManagerFeeSetterChanged) - if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "FeeSetterChanged", 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 -} - -// ParseFeeSetterChanged is a log parse operation binding the contract event 0x774b126b94b3cc801460a024dd575406c3ebf27affd7c36198a53ac6655f056d. -// -// Solidity: event FeeSetterChanged(address previousAddress, address newAddress) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) ParseFeeSetterChanged(log types.Log) (*ContractIEigenDAServiceManagerFeeSetterChanged, error) { - event := new(ContractIEigenDAServiceManagerFeeSetterChanged) - if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "FeeSetterChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractIEigenDAServiceManagerPaymentManagerSetIterator is returned from FilterPaymentManagerSet and is used to iterate over the raw logs and unpacked data for PaymentManagerSet events raised by the ContractIEigenDAServiceManager contract. -type ContractIEigenDAServiceManagerPaymentManagerSetIterator struct { - Event *ContractIEigenDAServiceManagerPaymentManagerSet // Event containing the contract specifics and raw log +// ContractIEigenDAServiceManagerBatchConfirmerChangedIterator is returned from FilterBatchConfirmerChanged and is used to iterate over the raw logs and unpacked data for BatchConfirmerChanged events raised by the ContractIEigenDAServiceManager contract. +type ContractIEigenDAServiceManagerBatchConfirmerChangedIterator struct { + Event *ContractIEigenDAServiceManagerBatchConfirmerChanged // 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 @@ -810,7 +671,7 @@ type ContractIEigenDAServiceManagerPaymentManagerSetIterator struct { // 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 *ContractIEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { +func (it *ContractIEigenDAServiceManagerBatchConfirmerChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -819,7 +680,7 @@ func (it *ContractIEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractIEigenDAServiceManagerPaymentManagerSet) + it.Event = new(ContractIEigenDAServiceManagerBatchConfirmerChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -834,7 +695,7 @@ func (it *ContractIEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractIEigenDAServiceManagerPaymentManagerSet) + it.Event = new(ContractIEigenDAServiceManagerBatchConfirmerChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -850,42 +711,42 @@ func (it *ContractIEigenDAServiceManagerPaymentManagerSetIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractIEigenDAServiceManagerPaymentManagerSetIterator) Error() error { +func (it *ContractIEigenDAServiceManagerBatchConfirmerChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractIEigenDAServiceManagerPaymentManagerSetIterator) Close() error { +func (it *ContractIEigenDAServiceManagerBatchConfirmerChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractIEigenDAServiceManagerPaymentManagerSet represents a PaymentManagerSet event raised by the ContractIEigenDAServiceManager contract. -type ContractIEigenDAServiceManagerPaymentManagerSet struct { +// ContractIEigenDAServiceManagerBatchConfirmerChanged represents a BatchConfirmerChanged event raised by the ContractIEigenDAServiceManager contract. +type ContractIEigenDAServiceManagerBatchConfirmerChanged struct { PreviousAddress common.Address NewAddress common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterPaymentManagerSet is a free log retrieval operation binding the contract event 0xa3044efb81dffce20bbf49cae117f167852a973364ae504dfade51a8d022c95a. +// FilterBatchConfirmerChanged is a free log retrieval operation binding the contract event 0xf024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c085. // -// Solidity: event PaymentManagerSet(address previousAddress, address newAddress) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) FilterPaymentManagerSet(opts *bind.FilterOpts) (*ContractIEigenDAServiceManagerPaymentManagerSetIterator, error) { +// Solidity: event BatchConfirmerChanged(address previousAddress, address newAddress) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) FilterBatchConfirmerChanged(opts *bind.FilterOpts) (*ContractIEigenDAServiceManagerBatchConfirmerChangedIterator, error) { - logs, sub, err := _ContractIEigenDAServiceManager.contract.FilterLogs(opts, "PaymentManagerSet") + logs, sub, err := _ContractIEigenDAServiceManager.contract.FilterLogs(opts, "BatchConfirmerChanged") if err != nil { return nil, err } - return &ContractIEigenDAServiceManagerPaymentManagerSetIterator{contract: _ContractIEigenDAServiceManager.contract, event: "PaymentManagerSet", logs: logs, sub: sub}, nil + return &ContractIEigenDAServiceManagerBatchConfirmerChangedIterator{contract: _ContractIEigenDAServiceManager.contract, event: "BatchConfirmerChanged", logs: logs, sub: sub}, nil } -// WatchPaymentManagerSet is a free log subscription operation binding the contract event 0xa3044efb81dffce20bbf49cae117f167852a973364ae504dfade51a8d022c95a. +// WatchBatchConfirmerChanged is a free log subscription operation binding the contract event 0xf024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c085. // -// Solidity: event PaymentManagerSet(address previousAddress, address newAddress) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) WatchPaymentManagerSet(opts *bind.WatchOpts, sink chan<- *ContractIEigenDAServiceManagerPaymentManagerSet) (event.Subscription, error) { +// Solidity: event BatchConfirmerChanged(address previousAddress, address newAddress) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) WatchBatchConfirmerChanged(opts *bind.WatchOpts, sink chan<- *ContractIEigenDAServiceManagerBatchConfirmerChanged) (event.Subscription, error) { - logs, sub, err := _ContractIEigenDAServiceManager.contract.WatchLogs(opts, "PaymentManagerSet") + logs, sub, err := _ContractIEigenDAServiceManager.contract.WatchLogs(opts, "BatchConfirmerChanged") if err != nil { return nil, err } @@ -895,8 +756,8 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) W select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractIEigenDAServiceManagerPaymentManagerSet) - if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "PaymentManagerSet", log); err != nil { + event := new(ContractIEigenDAServiceManagerBatchConfirmerChanged) + if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "BatchConfirmerChanged", log); err != nil { return err } event.Raw = log @@ -917,12 +778,12 @@ func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) W }), nil } -// ParsePaymentManagerSet is a log parse operation binding the contract event 0xa3044efb81dffce20bbf49cae117f167852a973364ae504dfade51a8d022c95a. +// ParseBatchConfirmerChanged is a log parse operation binding the contract event 0xf024af0387e1367ceb1c6a3b6a00db4e9917e56bfb22a289808100f8e2b2c085. // -// Solidity: event PaymentManagerSet(address previousAddress, address newAddress) -func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) ParsePaymentManagerSet(log types.Log) (*ContractIEigenDAServiceManagerPaymentManagerSet, error) { - event := new(ContractIEigenDAServiceManagerPaymentManagerSet) - if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "PaymentManagerSet", log); err != nil { +// Solidity: event BatchConfirmerChanged(address previousAddress, address newAddress) +func (_ContractIEigenDAServiceManager *ContractIEigenDAServiceManagerFilterer) ParseBatchConfirmerChanged(log types.Log) (*ContractIEigenDAServiceManagerBatchConfirmerChanged, error) { + event := new(ContractIEigenDAServiceManagerBatchConfirmerChanged) + if err := _ContractIEigenDAServiceManager.contract.UnpackLog(event, "BatchConfirmerChanged", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/bindings/IndexRegistry/binding.go b/contracts/bindings/IndexRegistry/binding.go index 81c703b7a..963bc6b6c 100644 --- a/contracts/bindings/IndexRegistry/binding.go +++ b/contracts/bindings/IndexRegistry/binding.go @@ -43,8 +43,8 @@ type IIndexRegistryQuorumUpdate struct { // ContractIndexRegistryMetaData contains all meta data concerning the ContractIndexRegistry contract. var ContractIndexRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_DOES_NOT_EXIST_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorIndexUpdateOfIndexForQuorumAtIndex\",\"inputs\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIIndexRegistry.OperatorUpdate\",\"components\":[{\"name\":\"fromBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorListForQuorumAtBlockNumber\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumUpdateAtIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIIndexRegistry.QuorumUpdate\",\"components\":[{\"name\":\"fromBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalOperatorsForQuorumAtBlockNumberByIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalOperatorList\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorIdToIndex\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalOperatorsForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumIndexUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"newIndex\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false}]", - Bin: "0x60a060405234801561001057600080fd5b5060405161142538038061142583398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b6080516112c06101656000396000818161013001528181610257015261097801526112c06000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c8063a454b3be11610071578063a454b3be1461018a578063a48bb0ac146101b2578063b81b2d3e146101e9578063bd29b8cd1461021a578063caa3cd761461022f578063f34109221461023757600080fd5b8062bff04d146100ad5780633a5c3c41146100d65780636653b53b1461010a5780636d14a9871461012b578063889ae3e51461016a575b600080fd5b6100c06100bb366004610f2e565b61024a565b6040516100cd9190610faa565b60405180910390f35b6100e96100e436600461101e565b610453565b60408051825163ffffffff16815260209283015192810192909252016100cd565b61011d610118366004611061565b6104d9565b6040519081526020016100cd565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100cd565b61017d61017836600461107a565b6104fa565b6040516100cd91906110ad565b61019d6101983660046110e5565b61066a565b60405163ffffffff90911681526020016100cd565b6101c56101c036600461107a565b6108f6565b60408051825163ffffffff90811682526020938401511692810192909252016100cd565b61019d6101f7366004611111565b600260209081526000928352604080842090915290825290205463ffffffff1681565b61022d610228366004610f2e565b61096d565b005b61011d600081565b61019d61024536600461113b565b610a83565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461029d5760405162461bcd60e51b815260040161029490611156565b60405180910390fd5b60008267ffffffffffffffff8111156102b8576102b86111c9565b6040519080825280602002602001820160405280156102e1578160200160208202803683370190505b50905060005b83811015610448576000858583818110610303576103036111df565b919091013560f81c6000818152600460205260408120549193509091508161032c576000610373565b60ff8316600090815260046020526040902061034960018461120b565b81548110610359576103596111df565b600091825260209091200154600160201b900463ffffffff165b9050610380898483610a8e565b6103fb8361038f836001611222565b60408051808201825263ffffffff9283166020808301918252438516835260ff9590951660009081526004865292832080546001810182559084529490922090519301805491518316600160201b0267ffffffffffffffff199092169390921692909217919091179055565b610406816001611222565b858581518110610418576104186111df565b602002602001019063ffffffff16908163ffffffff168152505050505080806104409061124a565b9150506102e7565b5090505b9392505050565b604080518082019091526000808252602082015260ff8316600090815260036020908152604080832063ffffffff808916855292529091208054909184169081106104a0576104a06111df565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b600181815481106104e957600080fd5b600091825260209091200154905081565b606060006105088484610b56565b63ffffffff1667ffffffffffffffff811115610526576105266111c9565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b815181101561066057610569818686610cf9565b82828151811061057b5761057b6111df565b6020026020010181815250506000801b82828151811061059d5761059d6111df565b6020026020010151141561064e5760405162461bcd60e51b815260206004820152606660248201527f496e64657852656769737472792e6765744f70657261746f724c697374466f7260448201527f51756f72756d4174426c6f636b4e756d6265723a206f70657261746f7220646f60648201527f6573206e6f742065786973742061742074686520676976656e20626c6f636b20608482015265373ab6b132b960d11b60a482015260c401610294565b806106588161124a565b915050610555565b5090505b92915050565b60ff83166000908152600460205260408120805482919063ffffffff8516908110610697576106976111df565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090851610156107915760405162461bcd60e51b815260206004820152607d60248201527f496e64657852656769737472792e676574546f74616c4f70657261746f72734660448201527f6f7251756f72756d4174426c6f636b4e756d6265724279496e6465783a20707260648201527f6f766964656420696e64657820697320746f6f2066617220696e20746865207060848201527f61737420666f722070726f766964656420626c6f636b206e756d62657200000060a482015260c401610294565b60ff85166000908152600460205260409020546107b09060019061120b565b8363ffffffff16146108ea5760ff851660009081526004602052604081206107d9856001611222565b63ffffffff16815481106107ef576107ef6111df565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b909204811693830193909352909250908616106108e85760405162461bcd60e51b815260206004820152607f60248201527f496e64657852656769737472792e676574546f74616c4f70657261746f72734660448201527f6f7251756f72756d4174426c6f636b4e756d6265724279496e6465783a20707260648201527f6f766964656420696e64657820697320746f6f2066617220696e20746865206660848201527f757475726520666f722070726f766964656420626c6f636b206e756d6265720060a482015260c401610294565b505b60200151949350505050565b604080518082019091526000808252602082015260ff83166000908152600460205260409020805463ffffffff8416908110610934576109346111df565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109b55760405162461bcd60e51b815260040161029490611156565b60005b81811015610a7d5760008383838181106109d4576109d46111df565b919091013560f81c60008181526002602090815260408083208a845290915290205490925063ffffffff169050610a0c868383610de9565b60ff821660009081526004602052604090208054610a6891849160019190610a3590839061120b565b81548110610a4557610a456111df565b60009182526020909120015461038f9190600160201b900463ffffffff16611265565b50508080610a759061124a565b9150506109b8565b50505050565b600061066482610ec0565b604080518082018252602080820186815263ffffffff438116845260ff87166000818152600385528681208884168083529086528782208054600180820183559184528784208951600292830290910180549190971663ffffffff19918216178755965195909101949094558282529285528681208a8252855286902080549093168217909255845191825291810191909152909185917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff821660009081526004602052604081205480610b78576000915050610664565b60ff841660009081526004602052604081208054909190610b9b57610b9b6111df565b60009182526020909120015463ffffffff9081169084161015610bc2576000915050610664565b60005b610bd060018361120b565b8111610cb457600081610be460018561120b565b610bee919061120b565b60ff871660009081526004602052604081208054929350909183908110610c1757610c176111df565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090871610610c9f5760ff87166000908152600460205260409020805483908110610c7a57610c7a6111df565b600091825260209091200154600160201b900463ffffffff1694506106649350505050565b50508080610cac9061124a565b915050610bc5565b5060ff841660009081526004602052604081208054909190610cd857610cd86111df565b600091825260209091200154600160201b900463ffffffff16949350505050565b60ff8216600090815260036020908152604080832063ffffffff87168452909152812054815b81811015610ddd57600081610d3560018561120b565b610d3f919061120b565b60ff8716600090815260036020908152604080832063ffffffff8c16845290915281208054929350909183908110610d7957610d796111df565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090871610610dc85760200151935061044c92505050565b50508080610dd59061124a565b915050610d1f565b50600095945050505050565b6000610df483610ec0565b60ff841660009081526003602052604081209192509081610e16600185611265565b63ffffffff1681526020808201929092526040908101600090812060ff881682526003909352908120600191610e4c8387611265565b63ffffffff168152602081019190915260400160002054610e6d919061120b565b81548110610e7d57610e7d6111df565b9060005260206000209060020201600101549050808514610ea357610ea3818585610a8e565b610eb9600085610eb4600186611265565b610a8e565b5050505050565b60ff811660009081526004602052604081205480610ee15750600092915050565b60ff83166000908152600460205260409020610efe60018361120b565b81548110610f0e57610f0e6111df565b600091825260209091200154600160201b900463ffffffff169392505050565b600080600060408486031215610f4357600080fd5b83359250602084013567ffffffffffffffff80821115610f6257600080fd5b818601915086601f830112610f7657600080fd5b813581811115610f8557600080fd5b876020828501011115610f9757600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610fe857835163ffffffff1683529284019291840191600101610fc6565b50909695505050505050565b803563ffffffff8116811461100857600080fd5b919050565b803560ff8116811461100857600080fd5b60008060006060848603121561103357600080fd5b61103c84610ff4565b925061104a6020850161100d565b915061105860408501610ff4565b90509250925092565b60006020828403121561107357600080fd5b5035919050565b6000806040838503121561108d57600080fd5b6110968361100d565b91506110a460208401610ff4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015610fe8578351835292840192918401916001016110c9565b6000806000606084860312156110fa57600080fd5b6111038461100d565b925061104a60208501610ff4565b6000806040838503121561112457600080fd5b61112d8361100d565b946020939093013593505050565b60006020828403121561114d57600080fd5b61044c8261100d565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561121d5761121d6111f5565b500390565b600063ffffffff808316818516808303821115611241576112416111f5565b01949350505050565b600060001982141561125e5761125e6111f5565b5060010190565b600063ffffffff83811690831681811015611282576112826111f5565b03939250505056fea2646970667358221220c2b30bd928dde59d05244bf7421f8952673593242c53aa336a8ec1a811bf9d8064736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_DOES_NOT_EXIST_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentOperatorIndex\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getLatestOperatorUpdate\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIIndexRegistry.OperatorUpdate\",\"components\":[{\"name\":\"fromBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestQuorumUpdate\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIIndexRegistry.QuorumUpdate\",\"components\":[{\"name\":\"fromBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorListAtBlockNumber\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorUpdateAtIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIIndexRegistry.OperatorUpdate\",\"components\":[{\"name\":\"fromBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumUpdateAtIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIIndexRegistry.QuorumUpdate\",\"components\":[{\"name\":\"fromBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalOperatorsForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumIndexUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"newIndex\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false}]", + Bin: "0x60a060405234801561001057600080fd5b5060405161147d38038061147d83398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161131161016c60003960008181610142015281816102750152818161041b01526107ed01526113116000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610f6f565b610268565b6040516100d89190610feb565b60405180910390f35b6100f46100ef36600461105f565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004611092565b610410565b005b6100f46101383660046110ad565b610534565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004611092565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c136600461105f565b610601565b6040516100d891906110f0565b61018f6101e136600461105f565b61076b565b6101286101f4366004610f6f565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611128565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004611092565b6108f0565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b290611152565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d66111c5565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf576000858583818110610321576103216111db565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b2906111f1565b60006103658361090f565b905061037c898461037760018561125c565b610a08565b8085858151811061038f5761038f6111db565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b790611281565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104585760405162461bcd60e51b81526004016102b290611152565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff80881685529252909120805490918416908110610581576105816111db565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff811115610632576106326111c5565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610cf0565b82828151811061068c5761068c6111db565b6020026020010181815250506000801b8282815181106106ae576106ae6111db565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a81611281565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a96111db565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082a5760405162461bcd60e51b81526004016102b290611152565b60005b818110156108ea576000838383818110610849576108496111db565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b2906111f1565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610de0565b905060006108be8583610e1a565b90508089146108d2576108d2818685610a08565b505050505080806108e290611281565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff16600161129c565b9050610948848383610e44565b60ff841660009081526002602052604081209061096660018461125c565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f60018461125c565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610ee4565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac36001836112c4565b81548110610ad357610ad36111db565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a6001836112c4565b81548110610b1a57610b1a6111db565b90600052602060002001915050919050565b60ff821660009081526003602052604081205480610bb4576040805162461bcd60e51b81526020600482015260248101919091527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646f6573206e6f7420657869737460648201526084016102b2565b60005b81811015610c6357600081610bcd6001856112c4565b610bd791906112c4565b60ff871660009081526003602052604081208054929350909183908110610c0057610c006111db565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090871610610c4e5760200151935061040a92505050565b50508080610c5b90611281565b915050610bb7565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054815b81811015610dd457600081610d2c6001856112c4565b610d3691906112c4565b60ff8816600090815260026020908152604080832063ffffffff8b16845290915281208054929350909183908110610d7057610d706111db565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090871610610dbf576020015193506103c392505050565b50508080610dcc90611281565b915050610d16565b50600095945050505050565b600080610dec83610aea565b8054909150600090610e0d90600190600160201b900463ffffffff1661125c565b90506103c3848383610e44565b600080610e278484610a92565b6001810154909150610e3c8585846000610ee4565b949350505050565b81544363ffffffff90811691161415610e7b57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610f0357600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610f8457600080fd5b83359250602084013567ffffffffffffffff80821115610fa357600080fd5b818601915086601f830112610fb757600080fd5b813581811115610fc657600080fd5b876020828501011115610fd857600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561102957835163ffffffff1683529284019291840191600101611007565b50909695505050505050565b803560ff8116811461104657600080fd5b919050565b803563ffffffff8116811461104657600080fd5b6000806040838503121561107257600080fd5b61107b83611035565b91506110896020840161104b565b90509250929050565b6000602082840312156110a457600080fd5b6103c382611035565b6000806000606084860312156110c257600080fd5b6110cb84611035565b92506110d96020850161104b565b91506110e76040850161104b565b90509250925092565b6020808252825182820181905260009190848201906040850190845b818110156110295783518352928401929184019160010161110c565b6000806040838503121561113b57600080fd5b61114483611035565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561127957611279611246565b039392505050565b600060001982141561129557611295611246565b5060010190565b600063ffffffff8083168185168083038211156112bb576112bb611246565b01949350505050565b6000828210156112d6576112d6611246565b50039056fea2646970667358221220c3e135963216c96c4f7bbab3b520fe879d1a91a9e49f3e084b5e54a81db696ed64736f6c634300080c0033", } // ContractIndexRegistryABI is the input ABI used to generate the binding from. @@ -245,74 +245,74 @@ func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) OPERATORDOESNO return _ContractIndexRegistry.Contract.OPERATORDOESNOTEXISTID(&_ContractIndexRegistry.CallOpts) } -// GetOperatorIndexUpdateOfIndexForQuorumAtIndex is a free data retrieval call binding the contract method 0x3a5c3c41. +// CurrentOperatorIndex is a free data retrieval call binding the contract method 0xe2e68580. // -// Solidity: function getOperatorIndexUpdateOfIndexForQuorumAtIndex(uint32 operatorIndex, uint8 quorumNumber, uint32 index) view returns((uint32,bytes32)) -func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetOperatorIndexUpdateOfIndexForQuorumAtIndex(opts *bind.CallOpts, operatorIndex uint32, quorumNumber uint8, index uint32) (IIndexRegistryOperatorUpdate, error) { +// Solidity: function currentOperatorIndex(uint8 , bytes32 ) view returns(uint32) +func (_ContractIndexRegistry *ContractIndexRegistryCaller) CurrentOperatorIndex(opts *bind.CallOpts, arg0 uint8, arg1 [32]byte) (uint32, error) { var out []interface{} - err := _ContractIndexRegistry.contract.Call(opts, &out, "getOperatorIndexUpdateOfIndexForQuorumAtIndex", operatorIndex, quorumNumber, index) + err := _ContractIndexRegistry.contract.Call(opts, &out, "currentOperatorIndex", arg0, arg1) if err != nil { - return *new(IIndexRegistryOperatorUpdate), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(IIndexRegistryOperatorUpdate)).(*IIndexRegistryOperatorUpdate) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// GetOperatorIndexUpdateOfIndexForQuorumAtIndex is a free data retrieval call binding the contract method 0x3a5c3c41. +// CurrentOperatorIndex is a free data retrieval call binding the contract method 0xe2e68580. // -// Solidity: function getOperatorIndexUpdateOfIndexForQuorumAtIndex(uint32 operatorIndex, uint8 quorumNumber, uint32 index) view returns((uint32,bytes32)) -func (_ContractIndexRegistry *ContractIndexRegistrySession) GetOperatorIndexUpdateOfIndexForQuorumAtIndex(operatorIndex uint32, quorumNumber uint8, index uint32) (IIndexRegistryOperatorUpdate, error) { - return _ContractIndexRegistry.Contract.GetOperatorIndexUpdateOfIndexForQuorumAtIndex(&_ContractIndexRegistry.CallOpts, operatorIndex, quorumNumber, index) +// Solidity: function currentOperatorIndex(uint8 , bytes32 ) view returns(uint32) +func (_ContractIndexRegistry *ContractIndexRegistrySession) CurrentOperatorIndex(arg0 uint8, arg1 [32]byte) (uint32, error) { + return _ContractIndexRegistry.Contract.CurrentOperatorIndex(&_ContractIndexRegistry.CallOpts, arg0, arg1) } -// GetOperatorIndexUpdateOfIndexForQuorumAtIndex is a free data retrieval call binding the contract method 0x3a5c3c41. +// CurrentOperatorIndex is a free data retrieval call binding the contract method 0xe2e68580. // -// Solidity: function getOperatorIndexUpdateOfIndexForQuorumAtIndex(uint32 operatorIndex, uint8 quorumNumber, uint32 index) view returns((uint32,bytes32)) -func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetOperatorIndexUpdateOfIndexForQuorumAtIndex(operatorIndex uint32, quorumNumber uint8, index uint32) (IIndexRegistryOperatorUpdate, error) { - return _ContractIndexRegistry.Contract.GetOperatorIndexUpdateOfIndexForQuorumAtIndex(&_ContractIndexRegistry.CallOpts, operatorIndex, quorumNumber, index) +// Solidity: function currentOperatorIndex(uint8 , bytes32 ) view returns(uint32) +func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) CurrentOperatorIndex(arg0 uint8, arg1 [32]byte) (uint32, error) { + return _ContractIndexRegistry.Contract.CurrentOperatorIndex(&_ContractIndexRegistry.CallOpts, arg0, arg1) } -// GetOperatorListForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x889ae3e5. +// GetLatestOperatorUpdate is a free data retrieval call binding the contract method 0x12d1d74d. // -// Solidity: function getOperatorListForQuorumAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) view returns(bytes32[]) -func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetOperatorListForQuorumAtBlockNumber(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32) ([][32]byte, error) { +// Solidity: function getLatestOperatorUpdate(uint8 quorumNumber, uint32 index) view returns((uint32,bytes32)) +func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetLatestOperatorUpdate(opts *bind.CallOpts, quorumNumber uint8, index uint32) (IIndexRegistryOperatorUpdate, error) { var out []interface{} - err := _ContractIndexRegistry.contract.Call(opts, &out, "getOperatorListForQuorumAtBlockNumber", quorumNumber, blockNumber) + err := _ContractIndexRegistry.contract.Call(opts, &out, "getLatestOperatorUpdate", quorumNumber, index) if err != nil { - return *new([][32]byte), err + return *new(IIndexRegistryOperatorUpdate), err } - out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + out0 := *abi.ConvertType(out[0], new(IIndexRegistryOperatorUpdate)).(*IIndexRegistryOperatorUpdate) return out0, err } -// GetOperatorListForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x889ae3e5. +// GetLatestOperatorUpdate is a free data retrieval call binding the contract method 0x12d1d74d. // -// Solidity: function getOperatorListForQuorumAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) view returns(bytes32[]) -func (_ContractIndexRegistry *ContractIndexRegistrySession) GetOperatorListForQuorumAtBlockNumber(quorumNumber uint8, blockNumber uint32) ([][32]byte, error) { - return _ContractIndexRegistry.Contract.GetOperatorListForQuorumAtBlockNumber(&_ContractIndexRegistry.CallOpts, quorumNumber, blockNumber) +// Solidity: function getLatestOperatorUpdate(uint8 quorumNumber, uint32 index) view returns((uint32,bytes32)) +func (_ContractIndexRegistry *ContractIndexRegistrySession) GetLatestOperatorUpdate(quorumNumber uint8, index uint32) (IIndexRegistryOperatorUpdate, error) { + return _ContractIndexRegistry.Contract.GetLatestOperatorUpdate(&_ContractIndexRegistry.CallOpts, quorumNumber, index) } -// GetOperatorListForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x889ae3e5. +// GetLatestOperatorUpdate is a free data retrieval call binding the contract method 0x12d1d74d. // -// Solidity: function getOperatorListForQuorumAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) view returns(bytes32[]) -func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetOperatorListForQuorumAtBlockNumber(quorumNumber uint8, blockNumber uint32) ([][32]byte, error) { - return _ContractIndexRegistry.Contract.GetOperatorListForQuorumAtBlockNumber(&_ContractIndexRegistry.CallOpts, quorumNumber, blockNumber) +// Solidity: function getLatestOperatorUpdate(uint8 quorumNumber, uint32 index) view returns((uint32,bytes32)) +func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetLatestOperatorUpdate(quorumNumber uint8, index uint32) (IIndexRegistryOperatorUpdate, error) { + return _ContractIndexRegistry.Contract.GetLatestOperatorUpdate(&_ContractIndexRegistry.CallOpts, quorumNumber, index) } -// GetQuorumUpdateAtIndex is a free data retrieval call binding the contract method 0xa48bb0ac. +// GetLatestQuorumUpdate is a free data retrieval call binding the contract method 0x8121906f. // -// Solidity: function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 index) view returns((uint32,uint32)) -func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetQuorumUpdateAtIndex(opts *bind.CallOpts, quorumNumber uint8, index uint32) (IIndexRegistryQuorumUpdate, error) { +// Solidity: function getLatestQuorumUpdate(uint8 quorumNumber) view returns((uint32,uint32)) +func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetLatestQuorumUpdate(opts *bind.CallOpts, quorumNumber uint8) (IIndexRegistryQuorumUpdate, error) { var out []interface{} - err := _ContractIndexRegistry.contract.Call(opts, &out, "getQuorumUpdateAtIndex", quorumNumber, index) + err := _ContractIndexRegistry.contract.Call(opts, &out, "getLatestQuorumUpdate", quorumNumber) if err != nil { return *new(IIndexRegistryQuorumUpdate), err @@ -324,111 +324,111 @@ func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetQuorumUpdateAtInde } -// GetQuorumUpdateAtIndex is a free data retrieval call binding the contract method 0xa48bb0ac. +// GetLatestQuorumUpdate is a free data retrieval call binding the contract method 0x8121906f. // -// Solidity: function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 index) view returns((uint32,uint32)) -func (_ContractIndexRegistry *ContractIndexRegistrySession) GetQuorumUpdateAtIndex(quorumNumber uint8, index uint32) (IIndexRegistryQuorumUpdate, error) { - return _ContractIndexRegistry.Contract.GetQuorumUpdateAtIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, index) +// Solidity: function getLatestQuorumUpdate(uint8 quorumNumber) view returns((uint32,uint32)) +func (_ContractIndexRegistry *ContractIndexRegistrySession) GetLatestQuorumUpdate(quorumNumber uint8) (IIndexRegistryQuorumUpdate, error) { + return _ContractIndexRegistry.Contract.GetLatestQuorumUpdate(&_ContractIndexRegistry.CallOpts, quorumNumber) } -// GetQuorumUpdateAtIndex is a free data retrieval call binding the contract method 0xa48bb0ac. +// GetLatestQuorumUpdate is a free data retrieval call binding the contract method 0x8121906f. // -// Solidity: function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 index) view returns((uint32,uint32)) -func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetQuorumUpdateAtIndex(quorumNumber uint8, index uint32) (IIndexRegistryQuorumUpdate, error) { - return _ContractIndexRegistry.Contract.GetQuorumUpdateAtIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, index) +// Solidity: function getLatestQuorumUpdate(uint8 quorumNumber) view returns((uint32,uint32)) +func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetLatestQuorumUpdate(quorumNumber uint8) (IIndexRegistryQuorumUpdate, error) { + return _ContractIndexRegistry.Contract.GetLatestQuorumUpdate(&_ContractIndexRegistry.CallOpts, quorumNumber) } -// GetTotalOperatorsForQuorumAtBlockNumberByIndex is a free data retrieval call binding the contract method 0xa454b3be. +// GetOperatorListAtBlockNumber is a free data retrieval call binding the contract method 0x89026245. // -// Solidity: function getTotalOperatorsForQuorumAtBlockNumberByIndex(uint8 quorumNumber, uint32 blockNumber, uint32 index) view returns(uint32) -func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetTotalOperatorsForQuorumAtBlockNumberByIndex(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32, index uint32) (uint32, error) { +// Solidity: function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) view returns(bytes32[]) +func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetOperatorListAtBlockNumber(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32) ([][32]byte, error) { var out []interface{} - err := _ContractIndexRegistry.contract.Call(opts, &out, "getTotalOperatorsForQuorumAtBlockNumberByIndex", quorumNumber, blockNumber, index) + err := _ContractIndexRegistry.contract.Call(opts, &out, "getOperatorListAtBlockNumber", quorumNumber, blockNumber) if err != nil { - return *new(uint32), err + return *new([][32]byte), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) return out0, err } -// GetTotalOperatorsForQuorumAtBlockNumberByIndex is a free data retrieval call binding the contract method 0xa454b3be. +// GetOperatorListAtBlockNumber is a free data retrieval call binding the contract method 0x89026245. // -// Solidity: function getTotalOperatorsForQuorumAtBlockNumberByIndex(uint8 quorumNumber, uint32 blockNumber, uint32 index) view returns(uint32) -func (_ContractIndexRegistry *ContractIndexRegistrySession) GetTotalOperatorsForQuorumAtBlockNumberByIndex(quorumNumber uint8, blockNumber uint32, index uint32) (uint32, error) { - return _ContractIndexRegistry.Contract.GetTotalOperatorsForQuorumAtBlockNumberByIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, blockNumber, index) +// Solidity: function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) view returns(bytes32[]) +func (_ContractIndexRegistry *ContractIndexRegistrySession) GetOperatorListAtBlockNumber(quorumNumber uint8, blockNumber uint32) ([][32]byte, error) { + return _ContractIndexRegistry.Contract.GetOperatorListAtBlockNumber(&_ContractIndexRegistry.CallOpts, quorumNumber, blockNumber) } -// GetTotalOperatorsForQuorumAtBlockNumberByIndex is a free data retrieval call binding the contract method 0xa454b3be. +// GetOperatorListAtBlockNumber is a free data retrieval call binding the contract method 0x89026245. // -// Solidity: function getTotalOperatorsForQuorumAtBlockNumberByIndex(uint8 quorumNumber, uint32 blockNumber, uint32 index) view returns(uint32) -func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetTotalOperatorsForQuorumAtBlockNumberByIndex(quorumNumber uint8, blockNumber uint32, index uint32) (uint32, error) { - return _ContractIndexRegistry.Contract.GetTotalOperatorsForQuorumAtBlockNumberByIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, blockNumber, index) +// Solidity: function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) view returns(bytes32[]) +func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetOperatorListAtBlockNumber(quorumNumber uint8, blockNumber uint32) ([][32]byte, error) { + return _ContractIndexRegistry.Contract.GetOperatorListAtBlockNumber(&_ContractIndexRegistry.CallOpts, quorumNumber, blockNumber) } -// GlobalOperatorList is a free data retrieval call binding the contract method 0x6653b53b. +// GetOperatorUpdateAtIndex is a free data retrieval call binding the contract method 0x2ed583e5. // -// Solidity: function globalOperatorList(uint256 ) view returns(bytes32) -func (_ContractIndexRegistry *ContractIndexRegistryCaller) GlobalOperatorList(opts *bind.CallOpts, arg0 *big.Int) ([32]byte, error) { +// Solidity: function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 index) view returns((uint32,bytes32)) +func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetOperatorUpdateAtIndex(opts *bind.CallOpts, quorumNumber uint8, operatorIndex uint32, index uint32) (IIndexRegistryOperatorUpdate, error) { var out []interface{} - err := _ContractIndexRegistry.contract.Call(opts, &out, "globalOperatorList", arg0) + err := _ContractIndexRegistry.contract.Call(opts, &out, "getOperatorUpdateAtIndex", quorumNumber, operatorIndex, index) if err != nil { - return *new([32]byte), err + return *new(IIndexRegistryOperatorUpdate), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(IIndexRegistryOperatorUpdate)).(*IIndexRegistryOperatorUpdate) return out0, err } -// GlobalOperatorList is a free data retrieval call binding the contract method 0x6653b53b. +// GetOperatorUpdateAtIndex is a free data retrieval call binding the contract method 0x2ed583e5. // -// Solidity: function globalOperatorList(uint256 ) view returns(bytes32) -func (_ContractIndexRegistry *ContractIndexRegistrySession) GlobalOperatorList(arg0 *big.Int) ([32]byte, error) { - return _ContractIndexRegistry.Contract.GlobalOperatorList(&_ContractIndexRegistry.CallOpts, arg0) +// Solidity: function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 index) view returns((uint32,bytes32)) +func (_ContractIndexRegistry *ContractIndexRegistrySession) GetOperatorUpdateAtIndex(quorumNumber uint8, operatorIndex uint32, index uint32) (IIndexRegistryOperatorUpdate, error) { + return _ContractIndexRegistry.Contract.GetOperatorUpdateAtIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, operatorIndex, index) } -// GlobalOperatorList is a free data retrieval call binding the contract method 0x6653b53b. +// GetOperatorUpdateAtIndex is a free data retrieval call binding the contract method 0x2ed583e5. // -// Solidity: function globalOperatorList(uint256 ) view returns(bytes32) -func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GlobalOperatorList(arg0 *big.Int) ([32]byte, error) { - return _ContractIndexRegistry.Contract.GlobalOperatorList(&_ContractIndexRegistry.CallOpts, arg0) +// Solidity: function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 index) view returns((uint32,bytes32)) +func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetOperatorUpdateAtIndex(quorumNumber uint8, operatorIndex uint32, index uint32) (IIndexRegistryOperatorUpdate, error) { + return _ContractIndexRegistry.Contract.GetOperatorUpdateAtIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, operatorIndex, index) } -// OperatorIdToIndex is a free data retrieval call binding the contract method 0xb81b2d3e. +// GetQuorumUpdateAtIndex is a free data retrieval call binding the contract method 0xa48bb0ac. // -// Solidity: function operatorIdToIndex(uint8 , bytes32 ) view returns(uint32) -func (_ContractIndexRegistry *ContractIndexRegistryCaller) OperatorIdToIndex(opts *bind.CallOpts, arg0 uint8, arg1 [32]byte) (uint32, error) { +// Solidity: function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 index) view returns((uint32,uint32)) +func (_ContractIndexRegistry *ContractIndexRegistryCaller) GetQuorumUpdateAtIndex(opts *bind.CallOpts, quorumNumber uint8, index uint32) (IIndexRegistryQuorumUpdate, error) { var out []interface{} - err := _ContractIndexRegistry.contract.Call(opts, &out, "operatorIdToIndex", arg0, arg1) + err := _ContractIndexRegistry.contract.Call(opts, &out, "getQuorumUpdateAtIndex", quorumNumber, index) if err != nil { - return *new(uint32), err + return *new(IIndexRegistryQuorumUpdate), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new(IIndexRegistryQuorumUpdate)).(*IIndexRegistryQuorumUpdate) return out0, err } -// OperatorIdToIndex is a free data retrieval call binding the contract method 0xb81b2d3e. +// GetQuorumUpdateAtIndex is a free data retrieval call binding the contract method 0xa48bb0ac. // -// Solidity: function operatorIdToIndex(uint8 , bytes32 ) view returns(uint32) -func (_ContractIndexRegistry *ContractIndexRegistrySession) OperatorIdToIndex(arg0 uint8, arg1 [32]byte) (uint32, error) { - return _ContractIndexRegistry.Contract.OperatorIdToIndex(&_ContractIndexRegistry.CallOpts, arg0, arg1) +// Solidity: function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 index) view returns((uint32,uint32)) +func (_ContractIndexRegistry *ContractIndexRegistrySession) GetQuorumUpdateAtIndex(quorumNumber uint8, index uint32) (IIndexRegistryQuorumUpdate, error) { + return _ContractIndexRegistry.Contract.GetQuorumUpdateAtIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, index) } -// OperatorIdToIndex is a free data retrieval call binding the contract method 0xb81b2d3e. +// GetQuorumUpdateAtIndex is a free data retrieval call binding the contract method 0xa48bb0ac. // -// Solidity: function operatorIdToIndex(uint8 , bytes32 ) view returns(uint32) -func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) OperatorIdToIndex(arg0 uint8, arg1 [32]byte) (uint32, error) { - return _ContractIndexRegistry.Contract.OperatorIdToIndex(&_ContractIndexRegistry.CallOpts, arg0, arg1) +// Solidity: function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 index) view returns((uint32,uint32)) +func (_ContractIndexRegistry *ContractIndexRegistryCallerSession) GetQuorumUpdateAtIndex(quorumNumber uint8, index uint32) (IIndexRegistryQuorumUpdate, error) { + return _ContractIndexRegistry.Contract.GetQuorumUpdateAtIndex(&_ContractIndexRegistry.CallOpts, quorumNumber, index) } // RegistryCoordinator is a free data retrieval call binding the contract method 0x6d14a987. @@ -514,6 +514,27 @@ func (_ContractIndexRegistry *ContractIndexRegistryTransactorSession) Deregister return _ContractIndexRegistry.Contract.DeregisterOperator(&_ContractIndexRegistry.TransactOpts, operatorId, quorumNumbers) } +// InitializeQuorum is a paid mutator transaction binding the contract method 0x26d941f2. +// +// Solidity: function initializeQuorum(uint8 quorumNumber) returns() +func (_ContractIndexRegistry *ContractIndexRegistryTransactor) InitializeQuorum(opts *bind.TransactOpts, quorumNumber uint8) (*types.Transaction, error) { + return _ContractIndexRegistry.contract.Transact(opts, "initializeQuorum", quorumNumber) +} + +// InitializeQuorum is a paid mutator transaction binding the contract method 0x26d941f2. +// +// Solidity: function initializeQuorum(uint8 quorumNumber) returns() +func (_ContractIndexRegistry *ContractIndexRegistrySession) InitializeQuorum(quorumNumber uint8) (*types.Transaction, error) { + return _ContractIndexRegistry.Contract.InitializeQuorum(&_ContractIndexRegistry.TransactOpts, quorumNumber) +} + +// InitializeQuorum is a paid mutator transaction binding the contract method 0x26d941f2. +// +// Solidity: function initializeQuorum(uint8 quorumNumber) returns() +func (_ContractIndexRegistry *ContractIndexRegistryTransactorSession) InitializeQuorum(quorumNumber uint8) (*types.Transaction, error) { + return _ContractIndexRegistry.Contract.InitializeQuorum(&_ContractIndexRegistry.TransactOpts, quorumNumber) +} + // RegisterOperator is a paid mutator transaction binding the contract method 0x00bff04d. // // Solidity: function registerOperator(bytes32 operatorId, bytes quorumNumbers) returns(uint32[]) diff --git a/contracts/bindings/MockRollup/binding.go b/contracts/bindings/MockRollup/binding.go index d68390ba5..36ed5a98f 100644 --- a/contracts/bindings/MockRollup/binding.go +++ b/contracts/bindings/MockRollup/binding.go @@ -41,8 +41,8 @@ type BN254G2Point struct { Y [2]*big.Int } -// EigenDABlobUtilsBlobVerificationProof is an auto generated low-level Go binding around an user-defined struct. -type EigenDABlobUtilsBlobVerificationProof struct { +// EigenDARollupUtilsBlobVerificationProof is an auto generated low-level Go binding around an user-defined struct. +type EigenDARollupUtilsBlobVerificationProof struct { BatchId uint32 BlobIndex uint8 BatchMetadata IEigenDAServiceManagerBatchMetadata @@ -83,8 +83,8 @@ type IEigenDAServiceManagerQuorumBlobParam struct { // ContractMockRollupMetaData contains all meta data concerning the ContractMockRollup contract. var ContractMockRollupMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_eigenDAServiceManager\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"},{\"name\":\"_tau\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"_illegalValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_quorumBlobParamsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_stakeRequired\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blacklist\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"challengeCommitment\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"point\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"commitments\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"polynomialCommitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAServiceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"illegalValue\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"postCommitment\",\"inputs\":[{\"name\":\"blobHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BlobHeader\",\"components\":[{\"name\":\"commitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBlobParams\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenDAServiceManager.QuorumBlobParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chunkLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"blobVerificationProof\",\"type\":\"tuple\",\"internalType\":\"structEigenDABlobUtils.BlobVerificationProof\",\"components\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"batchMetadata\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchMetadata\",\"components\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentages\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"signatoryRecordHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"fee\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"confirmationBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"inclusionProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdIndexes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"quorumBlobParamsHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerValidator\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakeRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tau\",\"inputs\":[],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validators\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"}]", - Bin: "0x608060405234801561001057600080fd5b50604051611a67380380611a6783398101604081905261002f9161006c565b600080546001600160a01b0319166001600160a01b0396909616959095179094558251600155602090920151600255600355600455600555610115565b600080600080600085870360c081121561008557600080fd5b86516001600160a01b038116811461009c57600080fd5b95506040601f19820112156100b057600080fd5b50604080519081016001600160401b03811182821017156100e157634e487b7160e01b600052604160045260246000fd5b6040908152602088810151835290880151908201526060870151608088015160a09098015196999198509695945092505050565b611943806101246000396000f3fe60806040526004361061009c5760003560e01c80636281e63b116100645780636281e63b1461018f578063bcc6587f146101af578063cfc4af55146101b7578063f9f92be4146101e7578063fa52c7d814610227578063fc30cad01461025757600080fd5b806305010105146100a157806321553525146100ca57806337507265146100ec5780634440bc5c1461010257806349ce899714610118575b600080fd5b3480156100ad57600080fd5b506100b760055481565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b506100ea6100e53660046112f1565b61028f565b005b3480156100f857600080fd5b506100b760045481565b34801561010e57600080fd5b506100b760035481565b34801561012457600080fd5b5061018061013336600461147e565b6008602090815260009182526040918290208054835180850190945260018201548452600290910154918301919091526001600160a01b03811691600160a01b90910463ffffffff169083565b6040516100c193929190611497565b34801561019b57600080fd5b506100ea6101aa36600461151a565b61053f565b6100ea6107dc565b3480156101c357600080fd5b506001546002546101d2919082565b604080519283526020830191909152016100c1565b3480156101f357600080fd5b50610217610202366004611582565b60076020526000908152604090205460ff1681565b60405190151581526020016100c1565b34801561023357600080fd5b50610217610242366004611582565b60066020526000908152604090205460ff1681565b34801561026357600080fd5b50600054610277906001600160a01b031681565b6040516001600160a01b0390911681526020016100c1565b3360009081526006602052604090205460ff1661030f5760405162461bcd60e51b815260206004820152603360248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a2056616c6964604482015272185d1bdc881b9bdd081c9959da5cdd195c9959606a1b60648201526084015b60405180910390fd5b426000908152600860205260409020546001600160a01b0316156103925760405162461bcd60e51b815260206004820152603460248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a20436f6d6d696044820152731d1b595b9d08185b1c9958591e481c1bdcdd195960621b6064820152608401610306565b60045482604001516040516020016103aa91906115b2565b60405160208183030381529060405280519060200120146104495760405162461bcd60e51b815260206004820152604d60248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a2051756f727560448201527f6d426c6f62506172616d7320646f206e6f74206d617463682071756f72756d4260648201526c0d8dec4a0c2e4c2dae690c2e6d609b1b608482015260a401610306565b600054604051633ddc42f360e11b815273__$3652595bba153b674dc03d93006671d207$__91637bb885e6916104919186916001600160a01b0390911690869060040161177a565b60006040518083038186803b1580156104a957600080fd5b505af41580156104bd573d6000803e3d6000fd5b50506040805160608101825233815260208681015163ffffffff90811682840190815297518385019081524260009081526008845294909420925183549851909116600160a01b026001600160c01b03199098166001600160a01b03919091161796909617815590518051600183015590940151600290940193909355505050565b600083815260086020908152604091829020825160608101845281546001600160a01b038082168352600160a01b90910463ffffffff1682850152845180860186526001840154815260029093015493830193909352928301528151166106065760405162461bcd60e51b815260206004820152603560248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527410dbdb5b5a5d1b595b9d081b9bdd081c1bdcdd1959605a1b6064820152608401610306565b806020015163ffffffff1683106106915760405162461bcd60e51b815260206004820152604360248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f506f696e74206d757374206265206c657373207468616e2064617461206c656e6064820152620cee8d60eb1b608482015260a401610306565b60035460408051808201825260015481526002546020820152908301516106bc92869290918661097c565b6107395760405162461bcd60e51b815260206004820152604260248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f446f6573206e6f74206576616c7561746520746f20696c6c6567616c2076616c606482015261756560f01b608482015260a401610306565b80516001600160a01b039081166000908152600660209081526040808320805460ff19908116909155855190941683526007909152808220805490931660011790925590513390670de0b6b3a7640000908381818185875af1925050503d80600081146107c2576040519150601f19603f3d011682016040523d82523d6000602084013e6107c7565b606091505b50509050806107d557600080fd5b5050505050565b600554341461085e5760405162461bcd60e51b815260206004820152604260248201527f4d6f636b526f6c6c75702e726567697374657256616c696461746f723a204d7560448201527f73742073656e64207374616b6520726571756972656420746f2072656769737460648201526132b960f11b608482015260a401610306565b3360009081526006602052604090205460ff16156108e45760405162461bcd60e51b815260206004820152603a60248201527f4d6f636b526f6c6c75702e726567697374657256616c696461746f723a20566160448201527f6c696461746f7220616c726561647920726567697374657265640000000000006064820152608401610306565b3360009081526007602052604090205460ff16156109605760405162461bcd60e51b815260206004820152603360248201527f4d6f636b526f6c6c75702e726567697374657256616c696461746f723a2056616044820152721b1a59185d1bdc88189b1858dadb1a5cdd1959606a1b6064820152608401610306565b336000908152600660205260409020805460ff19166001179055565b6000806109b36109ae604080518082018252600080825260209182015281518083019092526001825260029082015290565b6109f9565b90506109ee6109cc6109c5838a610ab8565b8790610b4f565b846109e16109da858b610ab8565b8890610b4f565b6109e9610be3565b610ca3565b979650505050505050565b60408051808201909152600080825260208201528151158015610a1e57506020820151155b15610a3c575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478460200151610a819190611856565b610aab907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4761188e565b905292915050565b919050565b6040805180820190915260008082526020820152610ad4610f12565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015610b0757610b09565bfe5b5080610b475760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610306565b505092915050565b6040805180820190915260008082526020820152610b6b610f30565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015610b07575080610b475760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610306565b610beb610f4e565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091610cd2610f73565b60005b6002811015610e97576000610ceb8260066118bb565b9050848260028110610cff57610cff6118a5565b60200201515183610d118360006118da565b600c8110610d2157610d216118a5565b6020020152848260028110610d3857610d386118a5565b60200201516020015183826001610d4f91906118da565b600c8110610d5f57610d5f6118a5565b6020020152838260028110610d7657610d766118a5565b6020020151515183610d898360026118da565b600c8110610d9957610d996118a5565b6020020152838260028110610db057610db06118a5565b6020020151516001602002015183610dc98360036118da565b600c8110610dd957610dd96118a5565b6020020152838260028110610df057610df06118a5565b602002015160200151600060028110610e0b57610e0b6118a5565b602002015183610e1c8360046118da565b600c8110610e2c57610e2c6118a5565b6020020152838260028110610e4357610e436118a5565b602002015160200151600160028110610e5e57610e5e6118a5565b602002015183610e6f8360056118da565b600c8110610e7f57610e7f6118a5565b60200201525080610e8f816118f2565b915050610cd5565b50610ea0610f92565b60006020826101808560086107d05a03fa9050808015610b07575080610f005760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610306565b5051151593505050505b949350505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610f61610fb0565b8152602001610f6e610fb0565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561100757611007610fce565b60405290565b60405160a0810167ffffffffffffffff8111828210171561100757611007610fce565b6040516060810167ffffffffffffffff8111828210171561100757611007610fce565b6040805190810167ffffffffffffffff8111828210171561100757611007610fce565b604051601f8201601f1916810167ffffffffffffffff8111828210171561109f5761109f610fce565b604052919050565b803563ffffffff81168114610ab357600080fd5b803560ff81168114610ab357600080fd5b600082601f8301126110dd57600080fd5b813567ffffffffffffffff8111156110f7576110f7610fce565b61110a601f8201601f1916602001611076565b81815284602083860101111561111f57600080fd5b816020850160208301376000918101602001919091529392505050565b80356bffffffffffffffffffffffff81168114610ab357600080fd5b60006080828403121561116a57600080fd5b611172610fe4565b9050813567ffffffffffffffff8082111561118c57600080fd5b90830190608082860312156111a057600080fd5b6111a8610fe4565b823581526020830135828111156111be57600080fd5b6111ca878286016110cc565b6020830152506040830135828111156111e257600080fd5b6111ee878286016110cc565b604083015250611200606084016110a7565b6060820152835250506020828101359082015261121f6040830161113c565b6040820152611230606083016110a7565b606082015292915050565b600060a0828403121561124d57600080fd5b61125561100d565b9050611260826110a7565b815261126e602083016110bb565b6020820152604082013567ffffffffffffffff8082111561128e57600080fd5b61129a85838601611158565b604084015260608401359150808211156112b357600080fd5b6112bf858386016110cc565b606084015260808401359150808211156112d857600080fd5b506112e5848285016110cc565b60808301525092915050565b600080604080848603121561130557600080fd5b833567ffffffffffffffff8082111561131d57600080fd5b9085019081870360808082121561133357600080fd5b61133b611030565b8583121561134857600080fd5b611350611053565b9250843583526020808601358185015283825261136e8787016110a7565b8183015260609350838601358581111561138757600080fd5b8087019650508a601f87011261139c57600080fd5b8535858111156113ae576113ae610fce565b6113bc828260051b01611076565b81815260079190911b8701820190828101908d8311156113db57600080fd5b978301975b828910156114475785898f0312156113f85760008081fd5b611400610fe4565b6114098a6110bb565b8152611416858b016110bb565b858201526114258b8b016110bb565b8b820152611434888b016110a7565b81890152825297850197908301906113e0565b9884019890985250909750880135945050508083111561146657600080fd5b50506114748582860161123b565b9150509250929050565b60006020828403121561149057600080fd5b5035919050565b6001600160a01b038416815263ffffffff8316602082015260808101610f0a604083018480518252602090810151910152565b600082601f8301126114db57600080fd5b6114e3611053565b8060408401858111156114f557600080fd5b845b8181101561150f5780358452602093840193016114f7565b509095945050505050565b600080600083850360c081121561153057600080fd5b84359350602085013592506080603f198201121561154d57600080fd5b50611556611053565b61156386604087016114ca565b815261157286608087016114ca565b6020820152809150509250925092565b60006020828403121561159457600080fd5b81356001600160a01b03811681146115ab57600080fd5b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156116245761161183855160ff815116825260ff602082015116602083015260ff604082015116604083015263ffffffff60608201511660608301525050565b92840192608092909201916001016115ce565b50909695505050505050565b6000815180845260005b818110156116565760208185018101518683018201520161163a565b81811115611668576000602083870101525b50601f01601f19169290920160200192915050565b600063ffffffff80835116845260ff6020840151166020850152604083015160a060408601528051608060a08701528051610120870152602081015160806101408801526116cf6101a0880182611630565b9050604082015161011f19888303016101608901526116ee8282611630565b60608401519095166101808901525050602082015160c087015260408201519261172860e08801856bffffffffffffffffffffffff169052565b606083015163ffffffff811661010089015293506060860151935086810360608801526117558185611630565b9350505050608083015184820360808601526117718282611630565b95945050505050565b60608152600060e0820161179c60608401875180518252602090810151910152565b60208681015163ffffffff1660a08501526040870151608060c0860181905281519384905290820192600091906101008701905b808410156118275761181382875160ff815116825260ff602082015116602083015260ff604082015116604083015263ffffffff60608201511660608301525050565b9484019460019390930192908201906117d0565b506001600160a01b038916878501528681036040880152611848818961167d565b9a9950505050505050505050565b60008261187357634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156118a0576118a0611878565b500390565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156118d5576118d5611878565b500290565b600082198211156118ed576118ed611878565b500190565b600060001982141561190657611906611878565b506001019056fea264697066735822122035f24f3d0500638f1c05f39b15cb1c1e39c17f0600a5da5cd2053663477694b264736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_eigenDAServiceManager\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"},{\"name\":\"_tau\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"_illegalValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_quorumBlobParamsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_stakeRequired\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blacklist\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"challengeCommitment\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"point\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"commitments\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"polynomialCommitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAServiceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"illegalValue\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"postCommitment\",\"inputs\":[{\"name\":\"blobHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BlobHeader\",\"components\":[{\"name\":\"commitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBlobParams\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenDAServiceManager.QuorumBlobParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chunkLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"blobVerificationProof\",\"type\":\"tuple\",\"internalType\":\"structEigenDARollupUtils.BlobVerificationProof\",\"components\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"batchMetadata\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchMetadata\",\"components\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structIEigenDAServiceManager.BatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentages\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"signatoryRecordHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"fee\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"confirmationBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"inclusionProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdIndexes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"quorumBlobParamsHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerValidator\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakeRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tau\",\"inputs\":[],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validators\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"}]", + Bin: "0x608060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f9161006c565b600080546001600160a01b0319166001600160a01b0396909616959095179094558251600155602090920151600255600355600455600555610115565b600080600080600085870360c081121561008557600080fd5b86516001600160a01b038116811461009c57600080fd5b95506040601f19820112156100b057600080fd5b50604080519081016001600160401b03811182821017156100e157634e487b7160e01b600052604160045260246000fd5b6040908152602088810151835290880151908201526060870151608088015160a09098015196999198509695945092505050565b611994806101246000396000f3fe60806040526004361061009c5760003560e01c80636281e63b116100645780636281e63b1461018f578063bcc6587f146101af578063cfc4af55146101b7578063f9f92be4146101e7578063fa52c7d814610227578063fc30cad01461025757600080fd5b806305010105146100a157806321553525146100ca57806337507265146100ec5780634440bc5c1461010257806349ce899714610118575b600080fd5b3480156100ad57600080fd5b506100b760055481565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b506100ea6100e5366004611342565b61028f565b005b3480156100f857600080fd5b506100b760045481565b34801561010e57600080fd5b506100b760035481565b34801561012457600080fd5b506101806101333660046114cf565b6008602090815260009182526040918290208054835180850190945260018201548452600290910154918301919091526001600160a01b03811691600160a01b90910463ffffffff169083565b6040516100c1939291906114e8565b34801561019b57600080fd5b506100ea6101aa36600461156b565b610590565b6100ea61082d565b3480156101c357600080fd5b506001546002546101d2919082565b604080519283526020830191909152016100c1565b3480156101f357600080fd5b506102176102023660046115d3565b60076020526000908152604090205460ff1681565b60405190151581526020016100c1565b34801561023357600080fd5b506102176102423660046115d3565b60066020526000908152604090205460ff1681565b34801561026357600080fd5b50600054610277906001600160a01b031681565b6040516001600160a01b0390911681526020016100c1565b3360009081526006602052604090205460ff1661030f5760405162461bcd60e51b815260206004820152603360248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a2056616c6964604482015272185d1bdc881b9bdd081c9959da5cdd195c9959606a1b60648201526084015b60405180910390fd5b426000908152600860205260409020546001600160a01b0316156103925760405162461bcd60e51b815260206004820152603460248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a20436f6d6d696044820152731d1b595b9d08185b1c9958591e481c1bdcdd195960621b6064820152608401610306565b60005460405163219460e160e21b815273__$32f04d18c688c2c57b0347c20a77f3d6c9$__916386518384916103da9186916001600160a01b0390911690869060040161174d565b60006040518083038186803b1580156103f257600080fd5b505af4158015610406573d6000803e3d6000fd5b5050505060005b82604001515181101561045d5760008360400151828151811061043257610432611829565b602090810291909101015163ffffffff9091166060909101528061045581611855565b91505061040d565b5060045482604001516040516020016104769190611870565b60405160208183030381529060405280519060200120146105155760405162461bcd60e51b815260206004820152604d60248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a2051756f727560448201527f6d426c6f62506172616d7320646f206e6f74206d617463682071756f72756d4260648201526c0d8dec4a0c2e4c2dae690c2e6d609b1b608482015260a401610306565b506040805160608101825233815260208381015163ffffffff90811682840190815294518385019081524260009081526008845294909420925183549551909116600160a01b026001600160c01b03199095166001600160a01b03919091161793909317815590518051600183015590910151600290910155565b600083815260086020908152604091829020825160608101845281546001600160a01b038082168352600160a01b90910463ffffffff1682850152845180860186526001840154815260029093015493830193909352928301528151166106575760405162461bcd60e51b815260206004820152603560248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527410dbdb5b5a5d1b595b9d081b9bdd081c1bdcdd1959605a1b6064820152608401610306565b806020015163ffffffff1683106106e25760405162461bcd60e51b815260206004820152604360248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f506f696e74206d757374206265206c657373207468616e2064617461206c656e6064820152620cee8d60eb1b608482015260a401610306565b600354604080518082018252600154815260025460208201529083015161070d9286929091866109cd565b61078a5760405162461bcd60e51b815260206004820152604260248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f446f6573206e6f74206576616c7561746520746f20696c6c6567616c2076616c606482015261756560f01b608482015260a401610306565b80516001600160a01b039081166000908152600660209081526040808320805460ff19908116909155855190941683526007909152808220805490931660011790925590513390670de0b6b3a7640000908381818185875af1925050503d8060008114610813576040519150601f19603f3d011682016040523d82523d6000602084013e610818565b606091505b505090508061082657600080fd5b5050505050565b60055434146108af5760405162461bcd60e51b815260206004820152604260248201527f4d6f636b526f6c6c75702e726567697374657256616c696461746f723a204d7560448201527f73742073656e64207374616b6520726571756972656420746f2072656769737460648201526132b960f11b608482015260a401610306565b3360009081526006602052604090205460ff16156109355760405162461bcd60e51b815260206004820152603a60248201527f4d6f636b526f6c6c75702e726567697374657256616c696461746f723a20566160448201527f6c696461746f7220616c726561647920726567697374657265640000000000006064820152608401610306565b3360009081526007602052604090205460ff16156109b15760405162461bcd60e51b815260206004820152603360248201527f4d6f636b526f6c6c75702e726567697374657256616c696461746f723a2056616044820152721b1a59185d1bdc88189b1858dadb1a5cdd1959606a1b6064820152608401610306565b336000908152600660205260409020805460ff19166001179055565b600080610a046109ff604080518082018252600080825260209182015281518083019092526001825260029082015290565b610a4a565b9050610a3f610a1d610a16838a610b09565b8790610ba0565b84610a32610a2b858b610b09565b8890610ba0565b610a3a610c34565b610cf4565b979650505050505050565b60408051808201909152600080825260208201528151158015610a6f57506020820151155b15610a8d575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478460200151610ad291906118ee565b610afc907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611910565b905292915050565b919050565b6040805180820190915260008082526020820152610b25610f63565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015610b5857610b5a565bfe5b5080610b985760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610306565b505092915050565b6040805180820190915260008082526020820152610bbc610f81565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015610b58575080610b985760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610306565b610c3c610f9f565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091610d23610fc4565b60005b6002811015610ee8576000610d3c826006611927565b9050848260028110610d5057610d50611829565b60200201515183610d62836000611946565b600c8110610d7257610d72611829565b6020020152848260028110610d8957610d89611829565b60200201516020015183826001610da09190611946565b600c8110610db057610db0611829565b6020020152838260028110610dc757610dc7611829565b6020020151515183610dda836002611946565b600c8110610dea57610dea611829565b6020020152838260028110610e0157610e01611829565b6020020151516001602002015183610e1a836003611946565b600c8110610e2a57610e2a611829565b6020020152838260028110610e4157610e41611829565b602002015160200151600060028110610e5c57610e5c611829565b602002015183610e6d836004611946565b600c8110610e7d57610e7d611829565b6020020152838260028110610e9457610e94611829565b602002015160200151600160028110610eaf57610eaf611829565b602002015183610ec0836005611946565b600c8110610ed057610ed0611829565b60200201525080610ee081611855565b915050610d26565b50610ef1610fe3565b60006020826101808560086107d05a03fa9050808015610b58575080610f515760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606401610306565b5051151593505050505b949350505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610fb2611001565b8152602001610fbf611001565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156110585761105861101f565b60405290565b60405160a0810167ffffffffffffffff811182821017156110585761105861101f565b6040516060810167ffffffffffffffff811182821017156110585761105861101f565b6040805190810167ffffffffffffffff811182821017156110585761105861101f565b604051601f8201601f1916810167ffffffffffffffff811182821017156110f0576110f061101f565b604052919050565b803563ffffffff81168114610b0457600080fd5b803560ff81168114610b0457600080fd5b600082601f83011261112e57600080fd5b813567ffffffffffffffff8111156111485761114861101f565b61115b601f8201601f19166020016110c7565b81815284602083860101111561117057600080fd5b816020850160208301376000918101602001919091529392505050565b80356bffffffffffffffffffffffff81168114610b0457600080fd5b6000608082840312156111bb57600080fd5b6111c3611035565b9050813567ffffffffffffffff808211156111dd57600080fd5b90830190608082860312156111f157600080fd5b6111f9611035565b8235815260208301358281111561120f57600080fd5b61121b8782860161111d565b60208301525060408301358281111561123357600080fd5b61123f8782860161111d565b604083015250611251606084016110f8565b606082015283525050602082810135908201526112706040830161118d565b6040820152611281606083016110f8565b606082015292915050565b600060a0828403121561129e57600080fd5b6112a661105e565b90506112b1826110f8565b81526112bf6020830161110c565b6020820152604082013567ffffffffffffffff808211156112df57600080fd5b6112eb858386016111a9565b6040840152606084013591508082111561130457600080fd5b6113108583860161111d565b6060840152608084013591508082111561132957600080fd5b506113368482850161111d565b60808301525092915050565b600080604080848603121561135657600080fd5b833567ffffffffffffffff8082111561136e57600080fd5b9085019081870360808082121561138457600080fd5b61138c611081565b8583121561139957600080fd5b6113a16110a4565b925084358352602080860135818501528382526113bf8787016110f8565b818301526060935083860135858111156113d857600080fd5b8087019650508a601f8701126113ed57600080fd5b8535858111156113ff576113ff61101f565b61140d828260051b016110c7565b81815260079190911b8701820190828101908d83111561142c57600080fd5b978301975b828910156114985785898f0312156114495760008081fd5b611451611035565b61145a8a61110c565b8152611467858b0161110c565b858201526114768b8b0161110c565b8b820152611485888b016110f8565b8189015282529785019790830190611431565b988401989098525090975088013594505050808311156114b757600080fd5b50506114c58582860161128c565b9150509250929050565b6000602082840312156114e157600080fd5b5035919050565b6001600160a01b038416815263ffffffff8316602082015260808101610f5b604083018480518252602090810151910152565b600082601f83011261152c57600080fd5b6115346110a4565b80604084018581111561154657600080fd5b845b81811015611560578035845260209384019301611548565b509095945050505050565b600080600083850360c081121561158157600080fd5b84359350602085013592506080603f198201121561159e57600080fd5b506115a76110a4565b6115b4866040870161151b565b81526115c3866080870161151b565b6020820152809150509250925092565b6000602082840312156115e557600080fd5b81356001600160a01b03811681146115fc57600080fd5b9392505050565b6000815180845260005b818110156116295760208185018101518683018201520161160d565b8181111561163b576000602083870101525b50601f01601f19169290920160200192915050565b600063ffffffff80835116845260ff6020840151166020850152604083015160a060408601528051608060a08701528051610120870152602081015160806101408801526116a26101a0880182611603565b9050604082015161011f19888303016101608901526116c18282611603565b60608401519095166101808901525050602082015160c08701526040820151926116fb60e08801856bffffffffffffffffffffffff169052565b606083015163ffffffff811661010089015293506060860151935086810360608801526117288185611603565b9350505050608083015184820360808601526117448282611603565b95945050505050565b60608152600060e0820161176f60608401875180518252602090810151910152565b60208681015163ffffffff1660a08501526040870151608060c0860181905281519384905290820192600091906101008701905b808410156117fa576117e682875160ff815116825260ff602082015116602083015260ff604082015116604083015263ffffffff60608201511660608301525050565b9484019460019390930192908201906117a3565b506001600160a01b03891687850152868103604088015261181b8189611650565b9a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156118695761186961183f565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156118e2576118cf83855160ff815116825260ff602082015116602083015260ff604082015116604083015263ffffffff60608201511660608301525050565b928401926080929092019160010161188c565b50909695505050505050565b60008261190b57634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156119225761192261183f565b500390565b60008160001904831182151516156119415761194161183f565b500290565b600082198211156119595761195961183f565b50019056fea26469706673582212208bd6d2816a5065ec167489e5490238a9e4fb18d147b052e68558bcc97f7bef5764736f6c634300080c0033", } // ContractMockRollupABI is the input ABI used to generate the binding from. @@ -559,21 +559,21 @@ func (_ContractMockRollup *ContractMockRollupTransactorSession) ChallengeCommitm // PostCommitment is a paid mutator transaction binding the contract method 0x21553525. // // Solidity: function postCommitment(((uint256,uint256),uint32,(uint8,uint8,uint8,uint32)[]) blobHeader, (uint32,uint8,((bytes32,bytes,bytes,uint32),bytes32,uint96,uint32),bytes,bytes) blobVerificationProof) returns() -func (_ContractMockRollup *ContractMockRollupTransactor) PostCommitment(opts *bind.TransactOpts, blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDABlobUtilsBlobVerificationProof) (*types.Transaction, error) { +func (_ContractMockRollup *ContractMockRollupTransactor) PostCommitment(opts *bind.TransactOpts, blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDARollupUtilsBlobVerificationProof) (*types.Transaction, error) { return _ContractMockRollup.contract.Transact(opts, "postCommitment", blobHeader, blobVerificationProof) } // PostCommitment is a paid mutator transaction binding the contract method 0x21553525. // // Solidity: function postCommitment(((uint256,uint256),uint32,(uint8,uint8,uint8,uint32)[]) blobHeader, (uint32,uint8,((bytes32,bytes,bytes,uint32),bytes32,uint96,uint32),bytes,bytes) blobVerificationProof) returns() -func (_ContractMockRollup *ContractMockRollupSession) PostCommitment(blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDABlobUtilsBlobVerificationProof) (*types.Transaction, error) { +func (_ContractMockRollup *ContractMockRollupSession) PostCommitment(blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDARollupUtilsBlobVerificationProof) (*types.Transaction, error) { return _ContractMockRollup.Contract.PostCommitment(&_ContractMockRollup.TransactOpts, blobHeader, blobVerificationProof) } // PostCommitment is a paid mutator transaction binding the contract method 0x21553525. // // Solidity: function postCommitment(((uint256,uint256),uint32,(uint8,uint8,uint8,uint32)[]) blobHeader, (uint32,uint8,((bytes32,bytes,bytes,uint32),bytes32,uint96,uint32),bytes,bytes) blobVerificationProof) returns() -func (_ContractMockRollup *ContractMockRollupTransactorSession) PostCommitment(blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDABlobUtilsBlobVerificationProof) (*types.Transaction, error) { +func (_ContractMockRollup *ContractMockRollupTransactorSession) PostCommitment(blobHeader IEigenDAServiceManagerBlobHeader, blobVerificationProof EigenDARollupUtilsBlobVerificationProof) (*types.Transaction, error) { return _ContractMockRollup.Contract.PostCommitment(&_ContractMockRollup.TransactOpts, blobHeader, blobVerificationProof) } diff --git a/contracts/bindings/OperatorStateRetriever/binding.go b/contracts/bindings/OperatorStateRetriever/binding.go new file mode 100644 index 000000000..e60a40dfa --- /dev/null +++ b/contracts/bindings/OperatorStateRetriever/binding.go @@ -0,0 +1,311 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractOperatorStateRetriever + +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 + _ = abi.ConvertType +) + +// OperatorStateRetrieverCheckSignaturesIndices is an auto generated low-level Go binding around an user-defined struct. +type OperatorStateRetrieverCheckSignaturesIndices struct { + NonSignerQuorumBitmapIndices []uint32 + QuorumApkIndices []uint32 + TotalStakeIndices []uint32 + NonSignerStakeIndices [][]uint32 +} + +// OperatorStateRetrieverOperator is an auto generated low-level Go binding around an user-defined struct. +type OperatorStateRetrieverOperator struct { + OperatorId [32]byte + Stake *big.Int +} + +// ContractOperatorStateRetrieverMetaData contains all meta data concerning the ContractOperatorStateRetriever contract. +var ContractOperatorStateRetrieverMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"getCheckSignaturesIndices\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonSignerOperatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorStateRetriever.CheckSignaturesIndices\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"}]", + Bin: "0x608060405234801561001057600080fd5b506114cc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633563b0d1146100465780634f739f741461006f578063cefdc1d41461008f575b600080fd5b610059610054366004610d22565b6100b0565b6040516100669190610e6a565b60405180910390f35b61008261007d366004610ed0565b61042b565b6040516100669190610fd4565b6100a261009d36600461108f565b610ab2565b6040516100669291906110d1565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011691906110f2565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c91906110f2565b90506000855167ffffffffffffffff81111561019a5761019a610cb9565b6040519080825280602002602001820160405280156101cd57816020015b60608152602001906001900390816101b85790505b50905060005b86518110156104205760008782815181106101f0576101f061110f565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8916602483015291506000906001600160a01b03861690638902624590604401600060405180830381865afa158015610251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102799190810190611149565b9050805167ffffffffffffffff81111561029557610295610cb9565b6040519080825280602002602001820160405280156102da57816020015b60408051808201909152600080825260208201528152602001906001900390816102b35790505b508484815181106102ed576102ed61110f565b602002602001018190525060005b815181101561040a5760008282815181106103185761031861110f565b602090810291909101810151604080518082018252828152905163fa28c62760e01b81526004810183905260ff8816602482015263ffffffff8e166044820152919350918201906001600160a01b038b169063fa28c62790606401602060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b491906111df565b6001600160601b03168152508686815181106103d2576103d261110f565b602002602001015183815181106103eb576103eb61110f565b60200260200101819052505080806104029061121e565b9150506102fb565b50505080806104189061121e565b9150506101d3565b509695505050505050565b6104566040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ba91906110f2565b90506104e76040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e90610517908b9089908990600401611239565b600060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261055c9190810190611283565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061058e908b908b908b9060040161133b565b600060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d39190810190611283565b60408201528567ffffffffffffffff8111156105f1576105f1610cb9565b60405190808252806020026020018201604052801561062457816020015b606081526020019060019003908161060f5790505b50606082015260005b60ff81168711156109c35760008567ffffffffffffffff81111561065357610653610cb9565b60405190808252806020026020018201604052801561067c578160200160208202803683370190505b5083606001518360ff16815181106106965761069661110f565b602002602001018190525060005b868110156108c25760008c6001600160a01b03166304ec63518a8a858181106106cf576106cf61110f565b905060200201358e886000015186815181106106ed576106ed61110f565b60200260200101516040518463ffffffff1660e01b815260040161072a9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190611364565b90508a8a8560ff168181106107825761078261110f565b6001600160c01b03841692013560f81c9190911c6001908116141590506108af57856001600160a01b031663dd9846b98a8a858181106107c4576107c461110f565b905060200201358d8d8860ff168181106107e0576107e061110f565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a919061138d565b85606001518560ff16815181106108735761087361110f565b6020026020010151848151811061088c5761088c61110f565b63ffffffff90921660209283029190910190910152826108ab8161121e565b9350505b50806108ba8161121e565b9150506106a4565b5060008167ffffffffffffffff8111156108de576108de610cb9565b604051908082528060200260200182016040528015610907578160200160208202803683370190505b50905060005b828110156109885784606001518460ff168151811061092e5761092e61110f565b602002602001015181815181106109475761094761110f565b60200260200101518282815181106109615761096161110f565b63ffffffff90921660209283029190910190910152806109808161121e565b91505061090d565b508084606001518460ff16815181106109a3576109a361110f565b6020026020010181905250505080806109bb906113aa565b91505061062d565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906110f2565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610a5b908b908b908e906004016113ca565b600060405180830381865afa158015610a78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aa09190810190611283565b60208301525098975050505050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610aed57610aed61110f565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610b2990889086906004016113f4565b600060405180830381865afa158015610b46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b6e9190810190611283565b600081518110610b8057610b8061110f565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c109190611364565b6001600160c01b031690506000610c2682610c44565b905081610c348a838a6100b0565b9550955050505050935093915050565b60606000805b610100811015610c9a576001811b915083821615610c8a57828160f81b604051602001610c78929190611448565b60405160208183030381529060405292505b610c938161121e565b9050610c4a565b5050919050565b6001600160a01b0381168114610cb657600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cf857610cf8610cb9565b604052919050565b63ffffffff81168114610cb657600080fd5b8035610d1d81610d00565b919050565b600080600060608486031215610d3757600080fd5b8335610d4281610ca1565b925060208481013567ffffffffffffffff80821115610d6057600080fd5b818701915087601f830112610d7457600080fd5b813581811115610d8657610d86610cb9565b610d98601f8201601f19168501610ccf565b91508082528884828501011115610dae57600080fd5b8084840185840137600084828401015250809450505050610dd160408501610d12565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015610e5c578385038a52825180518087529087019087870190845b81811015610e47578351805184528a01516001600160601b03168a84015292890192604090920191600101610e17565b50509a87019a95505091850191600101610df9565b509298975050505050505050565b602081526000610e7d6020830184610dda565b9392505050565b60008083601f840112610e9657600080fd5b50813567ffffffffffffffff811115610eae57600080fd5b6020830191508360208260051b8501011115610ec957600080fd5b9250929050565b60008060008060008060808789031215610ee957600080fd5b8635610ef481610ca1565b95506020870135610f0481610d00565b9450604087013567ffffffffffffffff80821115610f2157600080fd5b818901915089601f830112610f3557600080fd5b813581811115610f4457600080fd5b8a6020828501011115610f5657600080fd5b602083019650809550506060890135915080821115610f7457600080fd5b50610f8189828a01610e84565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b83811015610fc957815163ffffffff1687529582019590820190600101610fa7565b509495945050505050565b600060208083528351608082850152610ff060a0850182610f93565b905081850151601f198086840301604087015261100d8383610f93565b9250604087015191508086840301606087015261102a8383610f93565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b82811015611081578487830301845261106f828751610f93565b95880195938801939150600101611055565b509998505050505050505050565b6000806000606084860312156110a457600080fd5b83356110af81610ca1565b92506020840135915060408401356110c681610d00565b809150509250925092565b8281526040602082015260006110ea6040830184610dda565b949350505050565b60006020828403121561110457600080fd5b8151610e7d81610ca1565b634e487b7160e01b600052603260045260246000fd5b600067ffffffffffffffff82111561113f5761113f610cb9565b5060051b60200190565b6000602080838503121561115c57600080fd5b825167ffffffffffffffff81111561117357600080fd5b8301601f8101851361118457600080fd5b805161119761119282611125565b610ccf565b81815260059190911b820183019083810190878311156111b657600080fd5b928401925b828410156111d4578351825292840192908401906111bb565b979650505050505050565b6000602082840312156111f157600080fd5b81516001600160601b0381168114610e7d57600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561123257611232611208565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b0383111561126657600080fd5b8260051b8085606085013760009201606001918252509392505050565b6000602080838503121561129657600080fd5b825167ffffffffffffffff8111156112ad57600080fd5b8301601f810185136112be57600080fd5b80516112cc61119282611125565b81815260059190911b820183019083810190878311156112eb57600080fd5b928401925b828410156111d457835161130381610d00565b825292840192908401906112f0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff8416815260406020820152600061135b604083018486611312565b95945050505050565b60006020828403121561137657600080fd5b81516001600160c01b0381168114610e7d57600080fd5b60006020828403121561139f57600080fd5b8151610e7d81610d00565b600060ff821660ff8114156113c1576113c1611208565b60010192915050565b6040815260006113de604083018587611312565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561143b5784518352938301939183019160010161141f565b5090979650505050505050565b6000835160005b81811015611469576020818701810151858301520161144f565b81811115611478576000828501525b506001600160f81b031993909316919092019081526001019291505056fea2646970667358221220fcb1f255aae7b9146a140e84a4eb0e8b408871cac8d39cc131120d950b95ce0064736f6c634300080c0033", +} + +// ContractOperatorStateRetrieverABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractOperatorStateRetrieverMetaData.ABI instead. +var ContractOperatorStateRetrieverABI = ContractOperatorStateRetrieverMetaData.ABI + +// ContractOperatorStateRetrieverBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ContractOperatorStateRetrieverMetaData.Bin instead. +var ContractOperatorStateRetrieverBin = ContractOperatorStateRetrieverMetaData.Bin + +// DeployContractOperatorStateRetriever deploys a new Ethereum contract, binding an instance of ContractOperatorStateRetriever to it. +func DeployContractOperatorStateRetriever(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ContractOperatorStateRetriever, error) { + parsed, err := ContractOperatorStateRetrieverMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractOperatorStateRetrieverBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ContractOperatorStateRetriever{ContractOperatorStateRetrieverCaller: ContractOperatorStateRetrieverCaller{contract: contract}, ContractOperatorStateRetrieverTransactor: ContractOperatorStateRetrieverTransactor{contract: contract}, ContractOperatorStateRetrieverFilterer: ContractOperatorStateRetrieverFilterer{contract: contract}}, nil +} + +// ContractOperatorStateRetriever is an auto generated Go binding around an Ethereum contract. +type ContractOperatorStateRetriever struct { + ContractOperatorStateRetrieverCaller // Read-only binding to the contract + ContractOperatorStateRetrieverTransactor // Write-only binding to the contract + ContractOperatorStateRetrieverFilterer // Log filterer for contract events +} + +// ContractOperatorStateRetrieverCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractOperatorStateRetrieverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractOperatorStateRetrieverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractOperatorStateRetrieverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractOperatorStateRetrieverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractOperatorStateRetrieverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractOperatorStateRetrieverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractOperatorStateRetrieverSession struct { + Contract *ContractOperatorStateRetriever // 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 +} + +// ContractOperatorStateRetrieverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractOperatorStateRetrieverCallerSession struct { + Contract *ContractOperatorStateRetrieverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractOperatorStateRetrieverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractOperatorStateRetrieverTransactorSession struct { + Contract *ContractOperatorStateRetrieverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractOperatorStateRetrieverRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractOperatorStateRetrieverRaw struct { + Contract *ContractOperatorStateRetriever // Generic contract binding to access the raw methods on +} + +// ContractOperatorStateRetrieverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractOperatorStateRetrieverCallerRaw struct { + Contract *ContractOperatorStateRetrieverCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractOperatorStateRetrieverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractOperatorStateRetrieverTransactorRaw struct { + Contract *ContractOperatorStateRetrieverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractOperatorStateRetriever creates a new instance of ContractOperatorStateRetriever, bound to a specific deployed contract. +func NewContractOperatorStateRetriever(address common.Address, backend bind.ContractBackend) (*ContractOperatorStateRetriever, error) { + contract, err := bindContractOperatorStateRetriever(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractOperatorStateRetriever{ContractOperatorStateRetrieverCaller: ContractOperatorStateRetrieverCaller{contract: contract}, ContractOperatorStateRetrieverTransactor: ContractOperatorStateRetrieverTransactor{contract: contract}, ContractOperatorStateRetrieverFilterer: ContractOperatorStateRetrieverFilterer{contract: contract}}, nil +} + +// NewContractOperatorStateRetrieverCaller creates a new read-only instance of ContractOperatorStateRetriever, bound to a specific deployed contract. +func NewContractOperatorStateRetrieverCaller(address common.Address, caller bind.ContractCaller) (*ContractOperatorStateRetrieverCaller, error) { + contract, err := bindContractOperatorStateRetriever(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractOperatorStateRetrieverCaller{contract: contract}, nil +} + +// NewContractOperatorStateRetrieverTransactor creates a new write-only instance of ContractOperatorStateRetriever, bound to a specific deployed contract. +func NewContractOperatorStateRetrieverTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractOperatorStateRetrieverTransactor, error) { + contract, err := bindContractOperatorStateRetriever(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractOperatorStateRetrieverTransactor{contract: contract}, nil +} + +// NewContractOperatorStateRetrieverFilterer creates a new log filterer instance of ContractOperatorStateRetriever, bound to a specific deployed contract. +func NewContractOperatorStateRetrieverFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractOperatorStateRetrieverFilterer, error) { + contract, err := bindContractOperatorStateRetriever(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractOperatorStateRetrieverFilterer{contract: contract}, nil +} + +// bindContractOperatorStateRetriever binds a generic wrapper to an already deployed contract. +func bindContractOperatorStateRetriever(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractOperatorStateRetrieverMetaData.GetAbi() + 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 (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractOperatorStateRetriever.Contract.ContractOperatorStateRetrieverCaller.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 (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractOperatorStateRetriever.Contract.ContractOperatorStateRetrieverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractOperatorStateRetriever.Contract.ContractOperatorStateRetrieverTransactor.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 (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractOperatorStateRetriever.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 (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractOperatorStateRetriever.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractOperatorStateRetriever.Contract.contract.Transact(opts, method, params...) +} + +// GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. +// +// Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCaller) GetCheckSignaturesIndices(opts *bind.CallOpts, registryCoordinator common.Address, referenceBlockNumber uint32, quorumNumbers []byte, nonSignerOperatorIds [][32]byte) (OperatorStateRetrieverCheckSignaturesIndices, error) { + var out []interface{} + err := _ContractOperatorStateRetriever.contract.Call(opts, &out, "getCheckSignaturesIndices", registryCoordinator, referenceBlockNumber, quorumNumbers, nonSignerOperatorIds) + + if err != nil { + return *new(OperatorStateRetrieverCheckSignaturesIndices), err + } + + out0 := *abi.ConvertType(out[0], new(OperatorStateRetrieverCheckSignaturesIndices)).(*OperatorStateRetrieverCheckSignaturesIndices) + + return out0, err + +} + +// GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. +// +// Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverSession) GetCheckSignaturesIndices(registryCoordinator common.Address, referenceBlockNumber uint32, quorumNumbers []byte, nonSignerOperatorIds [][32]byte) (OperatorStateRetrieverCheckSignaturesIndices, error) { + return _ContractOperatorStateRetriever.Contract.GetCheckSignaturesIndices(&_ContractOperatorStateRetriever.CallOpts, registryCoordinator, referenceBlockNumber, quorumNumbers, nonSignerOperatorIds) +} + +// GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. +// +// Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCallerSession) GetCheckSignaturesIndices(registryCoordinator common.Address, referenceBlockNumber uint32, quorumNumbers []byte, nonSignerOperatorIds [][32]byte) (OperatorStateRetrieverCheckSignaturesIndices, error) { + return _ContractOperatorStateRetriever.Contract.GetCheckSignaturesIndices(&_ContractOperatorStateRetriever.CallOpts, registryCoordinator, referenceBlockNumber, quorumNumbers, nonSignerOperatorIds) +} + +// GetOperatorState is a free data retrieval call binding the contract method 0x3563b0d1. +// +// Solidity: function getOperatorState(address registryCoordinator, bytes quorumNumbers, uint32 blockNumber) view returns((bytes32,uint96)[][]) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCaller) GetOperatorState(opts *bind.CallOpts, registryCoordinator common.Address, quorumNumbers []byte, blockNumber uint32) ([][]OperatorStateRetrieverOperator, error) { + var out []interface{} + err := _ContractOperatorStateRetriever.contract.Call(opts, &out, "getOperatorState", registryCoordinator, quorumNumbers, blockNumber) + + if err != nil { + return *new([][]OperatorStateRetrieverOperator), err + } + + out0 := *abi.ConvertType(out[0], new([][]OperatorStateRetrieverOperator)).(*[][]OperatorStateRetrieverOperator) + + return out0, err + +} + +// GetOperatorState is a free data retrieval call binding the contract method 0x3563b0d1. +// +// Solidity: function getOperatorState(address registryCoordinator, bytes quorumNumbers, uint32 blockNumber) view returns((bytes32,uint96)[][]) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverSession) GetOperatorState(registryCoordinator common.Address, quorumNumbers []byte, blockNumber uint32) ([][]OperatorStateRetrieverOperator, error) { + return _ContractOperatorStateRetriever.Contract.GetOperatorState(&_ContractOperatorStateRetriever.CallOpts, registryCoordinator, quorumNumbers, blockNumber) +} + +// GetOperatorState is a free data retrieval call binding the contract method 0x3563b0d1. +// +// Solidity: function getOperatorState(address registryCoordinator, bytes quorumNumbers, uint32 blockNumber) view returns((bytes32,uint96)[][]) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCallerSession) GetOperatorState(registryCoordinator common.Address, quorumNumbers []byte, blockNumber uint32) ([][]OperatorStateRetrieverOperator, error) { + return _ContractOperatorStateRetriever.Contract.GetOperatorState(&_ContractOperatorStateRetriever.CallOpts, registryCoordinator, quorumNumbers, blockNumber) +} + +// GetOperatorState0 is a free data retrieval call binding the contract method 0xcefdc1d4. +// +// Solidity: function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) view returns(uint256, (bytes32,uint96)[][]) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCaller) GetOperatorState0(opts *bind.CallOpts, registryCoordinator common.Address, operatorId [32]byte, blockNumber uint32) (*big.Int, [][]OperatorStateRetrieverOperator, error) { + var out []interface{} + err := _ContractOperatorStateRetriever.contract.Call(opts, &out, "getOperatorState0", registryCoordinator, operatorId, blockNumber) + + if err != nil { + return *new(*big.Int), *new([][]OperatorStateRetrieverOperator), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out1 := *abi.ConvertType(out[1], new([][]OperatorStateRetrieverOperator)).(*[][]OperatorStateRetrieverOperator) + + return out0, out1, err + +} + +// GetOperatorState0 is a free data retrieval call binding the contract method 0xcefdc1d4. +// +// Solidity: function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) view returns(uint256, (bytes32,uint96)[][]) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverSession) GetOperatorState0(registryCoordinator common.Address, operatorId [32]byte, blockNumber uint32) (*big.Int, [][]OperatorStateRetrieverOperator, error) { + return _ContractOperatorStateRetriever.Contract.GetOperatorState0(&_ContractOperatorStateRetriever.CallOpts, registryCoordinator, operatorId, blockNumber) +} + +// GetOperatorState0 is a free data retrieval call binding the contract method 0xcefdc1d4. +// +// Solidity: function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) view returns(uint256, (bytes32,uint96)[][]) +func (_ContractOperatorStateRetriever *ContractOperatorStateRetrieverCallerSession) GetOperatorState0(registryCoordinator common.Address, operatorId [32]byte, blockNumber uint32) (*big.Int, [][]OperatorStateRetrieverOperator, error) { + return _ContractOperatorStateRetriever.Contract.GetOperatorState0(&_ContractOperatorStateRetriever.CallOpts, registryCoordinator, operatorId, blockNumber) +} diff --git a/contracts/bindings/RegistryCoordinator/binding.go b/contracts/bindings/RegistryCoordinator/binding.go new file mode 100644 index 000000000..17464658f --- /dev/null +++ b/contracts/bindings/RegistryCoordinator/binding.go @@ -0,0 +1,3261 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractRegistryCoordinator + +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 + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// IBLSApkRegistryPubkeyRegistrationParams is an auto generated low-level Go binding around an user-defined struct. +type IBLSApkRegistryPubkeyRegistrationParams struct { + PubkeyRegistrationSignature BN254G1Point + PubkeyG1 BN254G1Point + PubkeyG2 BN254G2Point +} + +// IRegistryCoordinatorOperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IRegistryCoordinatorOperatorInfo struct { + OperatorId [32]byte + Status uint8 +} + +// IRegistryCoordinatorOperatorKickParam is an auto generated low-level Go binding around an user-defined struct. +type IRegistryCoordinatorOperatorKickParam struct { + QuorumNumber uint8 + Operator common.Address +} + +// IRegistryCoordinatorOperatorSetParam is an auto generated low-level Go binding around an user-defined struct. +type IRegistryCoordinatorOperatorSetParam struct { + MaxOperatorCount uint32 + KickBIPsOfOperatorStake uint16 + KickBIPsOfTotalStake uint16 +} + +// IRegistryCoordinatorQuorumBitmapUpdate is an auto generated low-level Go binding around an user-defined struct. +type IRegistryCoordinatorQuorumBitmapUpdate struct { + UpdateBlockNumber uint32 + NextUpdateBlockNumber uint32 + QuorumBitmap *big.Int +} + +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + +// IStakeRegistryStrategyParams is an auto generated low-level Go binding around an user-defined struct. +type IStakeRegistryStrategyParams struct { + Strategy common.Address + Multiplier *big.Int +} + +// ContractRegistryCoordinatorMetaData contains all meta data concerning the ContractRegistryCoordinator contract. +var ContractRegistryCoordinatorMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_serviceManager\",\"type\":\"address\",\"internalType\":\"contractIServiceManager\"},{\"name\":\"_stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"_blsApkRegistry\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"},{\"name\":\"_indexRegistry\",\"type\":\"address\",\"internalType\":\"contractIIndexRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_CHURN_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PUBKEY_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorChurnApprovalDigestHash\",\"inputs\":[{\"name\":\"registeringOperatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorKickParams\",\"type\":\"tuple[]\",\"internalType\":\"structIRegistryCoordinator.OperatorKickParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"churnApprover\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createQuorum\",\"inputs\":[{\"name\":\"operatorSetParams\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"strategyParams\",\"type\":\"tuple[]\",\"internalType\":\"structIStakeRegistry.StrategyParams[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ejectOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ejector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentQuorumBitmap\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorInfo\",\"components\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIRegistryCoordinator.OperatorStatus\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorFromId\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorId\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetParams\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorStatus\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIRegistryCoordinator.OperatorStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapAtBlockNumberByIndex\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapHistoryLength\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapIndicesAtBlockNumber\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapUpdateByIndex\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.QuorumBitmapUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBitmap\",\"type\":\"uint192\",\"internalType\":\"uint192\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"indexRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIIndexRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_churnApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_ejector\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_operatorSetParams\",\"type\":\"tuple[]\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam[]\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"name\":\"_minimumStakes\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"_strategyParams\",\"type\":\"tuple[][]\",\"internalType\":\"structIStakeRegistry.StrategyParams[][]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isChurnApproverSaltUsed\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numRegistries\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pubkeyRegistrationMessageHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumUpdateBlockNumber\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSApkRegistry.PubkeyRegistrationParams\",\"components\":[{\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}]},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperatorWithChurn\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSApkRegistry.PubkeyRegistrationParams\",\"components\":[{\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}]},{\"name\":\"operatorKickParams\",\"type\":\"tuple[]\",\"internalType\":\"structIRegistryCoordinator.OperatorKickParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"churnApproverSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registries\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serviceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setChurnApprover\",\"inputs\":[{\"name\":\"_churnApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEjector\",\"inputs\":[{\"name\":\"_ejector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetParams\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operatorSetParams\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperators\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorsForQuorum\",\"inputs\":[{\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\",\"internalType\":\"address[][]\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSocket\",\"inputs\":[{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChurnApproverUpdated\",\"inputs\":[{\"name\":\"prevChurnApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newChurnApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EjectorUpdated\",\"inputs\":[{\"name\":\"prevEjector\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newEjector\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDeregistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetParamsUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"operatorSetParams\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSocketUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"socket\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumBlockNumberUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"blocknumber\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6101c06040523480156200001257600080fd5b506040516200633f3803806200633f83398101604081905262000035916200024e565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200012d8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b0384811661014052838116610180528281166101605281166101a0526200016962000173565b50505050620002b6565b600054610100900460ff1615620001e05760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000233576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200024b57600080fd5b50565b600080600080608085870312156200026557600080fd5b8451620002728162000235565b6020860151909450620002858162000235565b6040860151909350620002988162000235565b6060860151909250620002ab8162000235565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615f81620003be600039600081816106240152818161118c0152818161223e01528181612fe1015281816138680152613d0401526000818161057c015281816121c90152818161264901528181612f61015281816137bf01528181613a150152613c8301526000818161054201528181610eae0152818161220701528181612ee3015281816130c90152818161313f0152818161373f0152613d8001526000818161048601528181612e39015261368701526000613f5c01526000613fab01526000613f8601526000613edf01526000613f0901526000613f330152615f816000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df4594611610167578063a50857bf116100ce578063dd8283f311610087578063dd8283f3146106f5578063e65797ad14610708578063f2fde38b146107ab578063f8581191146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b8063a50857bf1461066d578063c391425e14610680578063ca0de882146106a0578063ca4f2d97146106c7578063d72d8dd6146106da578063d75b4c88146106e257600080fd5b8063886f119511610120578063886f1195146105cc5780638da5cb5b146105e55780639aa1653d146105ed5780639b5d177b1461060c5780639e9923c21461061f5780639feab8591461064657600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b1578063871ef049146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a7366004614a5c565b610820565b005b6102ce6102bc366004614a9d565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614ac8565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614be7565b610b2c565b6102ac610358366004614c5c565b610c14565b6102ce61036b366004614c5c565b6001600160a01b031660009081526099602052604090205490565b6102ac610394366004614a9d565b610cc7565b6103bc6103a7366004614a9d565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614c79565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614cac565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f610456366004614a9d565b610e95565b6102ac610469366004614c5c565b610f21565b6102ac61047c366004614c5c565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614c5c565b610f43565b6040516102d89190614cc7565b6102ac6104d6366004614d1f565b610fc2565b6104ee6104e9366004614c5c565b61154c565b6040516102d89190614dc2565b6102ac6115c0565b6103bc610511366004614cac565b6001805460ff9092161b9081161490565b6102ac610530366004614e47565b61168c565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f610572366004614a9d565b611723565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614e7b565b61174d565b6102ac61180d565b6102f46105c7366004614a9d565b611821565b60005461031f906201000090046001600160a01b031681565b61031f61182c565b6096546105fa9060ff1681565b60405160ff90911681526020016102d8565b6102ac61061a366004614f9b565b611845565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61067b366004615094565b611b7c565b61069361068e36600461515f565b611d00565b6040516102d89190615209565b6102ce7ff843b3116d574f43e69f8dda5d93ebf11dccc4a465983f9453058005cd6b34a081565b6102ac6106d5366004615253565b611fae565b609c546102ce565b6102ac6106f0366004615339565b612015565b6102ac6107033660046154ec565b612028565b610777610716366004614cac565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107b9366004614c5c565b61232c565b6102ce6107cc366004615600565b6123a2565b6102ac6107df366004614a9d565b6123e9565b6108136107f2366004614c5c565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d891906156b5565b600154600290600490811614156108525760405162461bcd60e51b8152600401610849906156c3565b60405180910390fd5b60005b82811015610930576000848483818110610871576108716156fa565b90506020020160208101906108869190614c5c565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614d8a565b60028111156108e2576108e2614d8a565b905250805190915060006108f582612545565b9050600061090b826001600160c01b03166125ae565b905061091885858361260b565b5050505050808061092890615726565b915050610855565b50505050565b6000838152609860205260408120805482919084908110610959576109596156fa565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614d8a565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c09908490615799565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b91906157ac565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b8152600401610849906157c9565b610cc4816126f8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615813565b610d545760405162461bcd60e51b815260040161084990615835565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e416156fa565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f91906157ac565b610f296127fd565b610cc48161285c565b610f3a6127fd565b610cc4816128c5565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061292e565b61297c565b60015460029060049081161415610feb5760405162461bcd60e51b8152600401610849906156c3565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612a0c9050565b905061103e81612ac5565b6110ae5760405162461bcd60e51b81526020600482015260476024820152600080516020615ecc83398151915260448201527f6f7273466f7251756f72756d3a20736f6d652071756f72756d7320646f206e6f6064820152661d08195e1a5cdd60ca1b608482015260a401610849565b84831461111d5760405162461bcd60e51b81526020600482015260436024820152600080516020615ecc83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b8381101561154357600085858381811061113c5761113c6156fa565b919091013560f81c9150369050600089898581811061115d5761115d6156fa565b905060200281019061116f919061587d565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff91906158c6565b63ffffffff16811461129b5760405162461bcd60e51b81526020600482015260656024820152600080516020615ecc83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b828110156114e25760008484838181106112bb576112bb6156fa565b90506020020160208101906112d09190614c5c565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561131b5761131b614d8a565b600281111561132c5761132c614d8a565b9052508051909150600061133f82612545565b905060016001600160c01b03821660ff8b161c8116146113c35760405162461bcd60e51b815260206004820152604460248201819052600080516020615ecc833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b03161161146e5760405162461bcd60e51b81526020600482015260676024820152600080516020615ecc83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b506114cc83838f8f8d908e600161148591906158e3565b92611492939291906158fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b509092506114db905081615726565b905061129f565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061153c90615726565b9050611120565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115a6576115a6614d8a565b60028111156115b7576115b7614d8a565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116319190615813565b61164d5760405162461bcd60e51b815260040161084990615835565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116946127fd565b609654829060ff908116908216106117145760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b61171e8383612af8565b505050565b609c818154811061173357600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117cd5760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b61171e8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba592505050565b6118156127fd565b61181f6000613055565b565b6000610e8f82612545565b60006118406064546001600160a01b031690565b905090565b60018054600091908116141561186d5760405162461bcd60e51b8152600401610849906156c3565b8389146118f05760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118fc33886130a7565b905061195b818787808060200260200160405190810160405280939291908181526020016000905b828210156119505761194160408302860136819003810190615925565b81526020019060010190611924565b5050505050866131d8565b60006119a233838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613362915050565b905060005b8b811015611b6d576000609760008f8f858181106119c7576119c76156fa565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a3457611a346156fa565b602002602001015163ffffffff161115611b5a57611ad58e8e84818110611a5d57611a5d6156fa565b9050013560f81c60f81b60f81c84604001518481518110611a8057611a806156fa565b60200260200101513386602001518681518110611a9f57611a9f6156fa565b60200260200101518d8d88818110611ab957611ab96156fa565b905060400201803603810190611acf9190615925565b866138f6565b611b5a898984818110611aea57611aea6156fa565b9050604002016020016020810190611b029190614c5c565b8f8f8590866001611b1391906158e3565b92611b20939291906158fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba592505050565b5080611b6581615726565b9150506119a7565b50505050505050505050505050565b600180546000919081161415611ba45760405162461bcd60e51b8152600401610849906156c3565b6000611bb033856130a7565b90506000611bf933838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613362915050565b51905060005b88811015611cf45760008a8a83818110611c1b57611c1b6156fa565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c5157611c516156fa565b602002602001015163ffffffff161115611ce15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cec81615726565b915050611bff565b50505050505050505050565b6060600082516001600160401b03811115611d1d57611d1d614b00565b604051908082528060200260200182016040528015611d46578160200160208202803683370190505b50905060005b8351811015611fa657600060986000868481518110611d6d57611d6d6156fa565b6020026020010151815260200190815260200160002080549050905060005b81811015611f91578663ffffffff1660986000888681518110611db157611db16156fa565b6020026020010151815260200190815260200160002060018385611dd59190615941565b611ddf9190615941565b81548110611def57611def6156fa565b60009182526020909120015463ffffffff1611611f7f57600060986000888681518110611e1e57611e1e6156fa565b6020026020010151815260200190815260200160002060018385611e429190615941565b611e4c9190615941565b81548110611e5c57611e5c6156fa565b600091825260209091200154600160201b900463ffffffff169050801580611e8f57508763ffffffff168163ffffffff16115b611f375760405162461bcd60e51b815260206004820152606760248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e64696365734174426c6f636b4e756d6265723a206f70657261746f60648201527f72496420686173206e6f2071756f72756d4269746d61707320617420626c6f6360848201526635a73ab6b132b960c91b60a482015260c401610849565b6001611f438385615941565b611f4d9190615941565b858581518110611f5f57611f5f6156fa565b602002602001019063ffffffff16908163ffffffff168152505050611f91565b80611f8981615726565b915050611d8c565b50508080611f9e90615726565b915050611d4c565b509392505050565b6001805460029081161415611fd55760405162461bcd60e51b8152600401610849906156c3565b61171e3384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba592505050565b61201d6127fd565b61171e838383613bcb565b600054610100900460ff16158080156120485750600054600160ff909116105b806120625750303b158015612062575060005460ff166001145b6120c55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff1916600117905580156120e8576000805461ff0019166101001790555b825184511480156120fa575081518351145b6121645760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b61216d89613055565b6121778686613de2565b6121808861285c565b612189876128c5565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156122da576122c8858281518110612287576122876156fa565b60200260200101518583815181106122a1576122a16156fa565b60200260200101518584815181106122bb576122bb6156fa565b6020026020010151613bcb565b806122d281615726565b915050612269565b508015612321576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6123346127fd565b6001600160a01b0381166123995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481613055565b60006123e07ff843b3116d574f43e69f8dda5d93ebf11dccc4a465983f9453058005cd6b34a086868686604051602001610fa2959493929190615958565b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246091906157ac565b6001600160a01b0316336001600160a01b0316146124905760405162461bcd60e51b8152600401610849906157c9565b60015419811960015419161461250e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806125625750600092915050565b600083815260986020526040902061257b600183615941565b8154811061258b5761258b6156fa565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000805b610100811015612604576001811b9150838216156125f457828160f81b6040516020016125e29291906159ce565b60405160208183030381529060405292505b6125fd81615726565b90506125b4565b5050919050565b60018260200151600281111561262357612623614d8a565b1461262d57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe90612682908890869088906004016159fd565b6020604051808303816000875af11580156126a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c59190615a24565b90506001600160c01b038116156126f1576126f1856126ec836001600160c01b03166125ae565b612ba5565b5050505050565b6001600160a01b0381166127865760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361280661182c565b6001600160a01b03161461181f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f61293b613ed2565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806129ac600080516020615f0c83398151915286615a63565b90505b6129b881613ff9565b9093509150600080516020615f0c8339815191528283098314156129f2576040805180820190915290815260208101919091529392505050565b600080516020615f0c8339815191526001820890506129af565b600080612a188461407b565b90508015612abe578260ff168460018651612a339190615941565b81518110612a4357612a436156fa565b016020015160f81c10612abe5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b6096546000908190612adf9060019060ff1681901b615941565b9050612abe6001600160c01b0384811690831681161490565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612bd957612bd9614d8a565b14612c465760405162461bcd60e51b81526020600482015260436024820152600080516020615f2c83398151915260448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612c5a90859060ff16612a0c565b90506000612c6783612545565b90506001600160c01b038216612cd35760405162461bcd60e51b815260206004820152603b6024820152600080516020615f2c83398151915260448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612cdc82612ac5565b612d475760405162461bcd60e51b81526020600482015260426024820152600080516020615f2c83398151915260448201527f70657261746f723a20736f6d652071756f72756d7320646f206e6f74206578696064820152611cdd60f21b608482015260a401610849565b612d5e6001600160c01b0383811690831681161490565b612de45760405162461bcd60e51b81526020600482015260596024820152600080516020615f2c83398151915260448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612dfd8482614208565b6001600160c01b038116612ecc5760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612f1a908a908a90600401615a77565b600060405180830381600087803b158015612f3457600080fd5b505af1158015612f48573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612f9a9087908a90600401615a9b565b600060405180830381600087803b158015612fb457600080fd5b505af1158015612fc8573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd915061301a9087908a90600401615a9b565b600060405180830381600087803b15801561303457600080fd5b505af1158015613048573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015613112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131369190615ab4565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461317787610f43565b6040518463ffffffff1660e01b815260040161319593929190615acd565b6020604051808303816000875af11580156131b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abe9190615ab4565b6020808201516000908152609a909152604090205460ff161561327e5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b42816040015110156133135760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d5490519183015161171e926001600160a01b039092169161335b91879187916123a2565b83516143c8565b61338660405180606001604052806060815260200160608152602001606081525090565b60006133ce86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612a0c9050565b905060006133db88612545565b90506001600160c01b0382166134595760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b61346282612ac5565b6134d6576040805162461bcd60e51b81526020600482015260248101919091527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a20736f6d652071756f72756d7320646f206e6f742065786973746064820152608401610849565b8082166001600160c01b03161561358c5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176135a58982614208565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516135d59190615799565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561360f5761360f614d8a565b14613728576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561366a5761366a614d8a565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906136bf908d908990600401615b4c565b600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb2795290613778908d908c908c90600401615bc0565b600060405180830381600087803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506137fc908d908d908d908d90600401615be5565b6000604051808303816000875af115801561381b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138439190810190615c7b565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906138a0908c908c908c90600401615cde565b6000604051808303816000875af11580156138bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138e79190810190615cf8565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156139765760405162461bcd60e51b81526020600482015260356024820152600080516020615eec83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146139f35760405162461bcd60e51b81526020600482015260476024820152600080516020615eec83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a889190615d91565b9050613a948185614582565b6001600160601b0316866001600160601b031611613b275760405162461bcd60e51b81526020600482015260566024820152600080516020615eec83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b613b3188856145a6565b6001600160601b0316816001600160601b0316106123215760405162461bcd60e51b815260206004820152605c6024820152600080516020615eec83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b60965460ff1660c08110613c3f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613c4a816001615dae565b6096805460ff191660ff9290921691909117905580613c698186612af8565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cbc90849088908890600401615dd3565b600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613dce57600080fd5b505af1158015612321573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e0957506001600160a01b03821615155b613e8b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613ece826126f8565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f2b57507f000000000000000000000000000000000000000000000000000000000000000046145b15613f5557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f0c8339815191526003600080516020615f0c83398151915286600080516020615f0c83398151915288890909089050600061406f827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f0c8339815191526145c0565b91959194509092505050565b6000610100825111156141045760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b815161411257506000919050565b60008083600081518110614128576141286156fa565b0160200151600160f89190911c81901b92505b84518110156141ff57848181518110614156576141566156fa565b0160200151600160f89190911c1b91508282116141eb5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b918117916141f881615726565b905061413b565b50909392505050565b600082815260986020526040902054806142ad576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206142c6600184615941565b815481106142d6576142d66156fa565b600091825260209091200180549091504363ffffffff9081169116141561431a5780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156144e257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144089086908690600401615a9b565b602060405180830381865afa158015614425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144499190615e4c565b6001600160e01b0319161461171e5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b03166144f6838361466f565b6001600160a01b03161461171e5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b60208101516000906127109061459c9061ffff1685615e76565b612abe9190615ea5565b60408101516000906127109061459c9061ffff1685615e76565b6000806145cb6149dc565b6145d36149fa565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561461457614616565bfe5b50826146645760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b600080600061467e858561468b565b91509150611fa6816146fb565b6000808251604114156146c25760208301516040840151606085015160001a6146b6878285856148b6565b945094505050506146f4565b8251604014156146ec57602083015160408401516146e18683836149a3565b9350935050506146f4565b506000905060025b9250929050565b600081600481111561470f5761470f614d8a565b14156147185750565b600181600481111561472c5761472c614d8a565b141561477a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b600281600481111561478e5761478e614d8a565b14156147dc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b60038160048111156147f0576147f0614d8a565b14156148495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b600481600481111561485d5761485d614d8a565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148ed575060009050600361499a565b8460ff16601b1415801561490557508460ff16601c14155b15614916575060009050600461499a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561496a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149935760006001925092505061499a565b9150600090505b94509492505050565b6000806001600160ff1b038316816149c060ff86901c601b6158e3565b90506149ce878288856148b6565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a2a57600080fd5b5081356001600160401b03811115614a4157600080fd5b6020830191508360208260051b85010111156146f457600080fd5b60008060208385031215614a6f57600080fd5b82356001600160401b03811115614a8557600080fd5b614a9185828601614a18565b90969095509350505050565b600060208284031215614aaf57600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b600080600060608486031215614add57600080fd5b833592506020840135614aef81614ab6565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614b3857614b38614b00565b60405290565b604080519081016001600160401b0381118282101715614b3857614b38614b00565b604051601f8201601f191681016001600160401b0381118282101715614b8857614b88614b00565b604052919050565b60006001600160401b03831115614ba957614ba9614b00565b614bbc601f8401601f1916602001614b60565b9050828152838383011115614bd057600080fd5b828260208301376000602084830101529392505050565b600060208284031215614bf957600080fd5b81356001600160401b03811115614c0f57600080fd5b8201601f81018413614c2057600080fd5b614c2f84823560208401614b90565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614c5781614c37565b919050565b600060208284031215614c6e57600080fd5b8135612abe81614c37565b60008060408385031215614c8c57600080fd5b50508035926020909101359150565b803560ff81168114614c5757600080fd5b600060208284031215614cbe57600080fd5b612abe82614c9b565b815181526020808301519082015260408101610e8f565b60008083601f840112614cf057600080fd5b5081356001600160401b03811115614d0757600080fd5b6020830191508360208285010111156146f457600080fd5b60008060008060408587031215614d3557600080fd5b84356001600160401b0380821115614d4c57600080fd5b614d5888838901614a18565b90965094506020870135915080821115614d7157600080fd5b50614d7e87828801614cde565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614dbe57634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614ddd90840182614da0565b5092915050565b803561ffff81168114614c5757600080fd5b600060608284031215614e0857600080fd5b614e10614b16565b90508135614e1d81614ab6565b8152614e2b60208301614de4565b6020820152614e3c60408301614de4565b604082015292915050565b60008060808385031215614e5a57600080fd5b614e6383614c9b565b9150614e728460208501614df6565b90509250929050565b600080600060408486031215614e9057600080fd5b8335614e9b81614c37565b925060208401356001600160401b03811115614eb657600080fd5b614ec286828701614cde565b9497909650939450505050565b60006101008284031215614ee257600080fd5b50919050565b60008083601f840112614efa57600080fd5b5081356001600160401b03811115614f1157600080fd5b6020830191508360208260061b85010111156146f457600080fd5b600060608284031215614f3e57600080fd5b614f46614b16565b905081356001600160401b03811115614f5e57600080fd5b8201601f81018413614f6f57600080fd5b614f7e84823560208401614b90565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614fba57600080fd5b89356001600160401b0380821115614fd157600080fd5b614fdd8d838e01614cde565b909b50995060208c0135915080821115614ff657600080fd5b6150028d838e01614cde565b90995097508791506150178d60408e01614ecf565b96506101408c013591508082111561502e57600080fd5b61503a8d838e01614ee8565b90965094506101608c013591508082111561505457600080fd5b6150608d838e01614f2c565b93506101808c013591508082111561507757600080fd5b506150848c828d01614f2c565b9150509295985092959850929598565b60008060008060008061016087890312156150ae57600080fd5b86356001600160401b03808211156150c557600080fd5b6150d18a838b01614cde565b909850965060208901359150808211156150ea57600080fd5b6150f68a838b01614cde565b909650945084915061510b8a60408b01614ecf565b935061014089013591508082111561512257600080fd5b5061512f89828a01614f2c565b9150509295509295509295565b60006001600160401b0382111561515557615155614b00565b5060051b60200190565b6000806040838503121561517257600080fd5b823561517d81614ab6565b91506020838101356001600160401b0381111561519957600080fd5b8401601f810186136151aa57600080fd5b80356151bd6151b88261513c565b614b60565b81815260059190911b820183019083810190888311156151dc57600080fd5b928401925b828410156151fa578335825292840192908401906151e1565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561524757835163ffffffff1683529284019291840191600101615225565b50909695505050505050565b6000806020838503121561526657600080fd5b82356001600160401b0381111561527c57600080fd5b614a9185828601614cde565b6001600160601b0381168114610cc457600080fd5b600082601f8301126152ae57600080fd5b813560206152be6151b88361513c565b82815260069290921b840181019181810190868411156152dd57600080fd5b8286015b8481101561532e57604081890312156152fa5760008081fd5b615302614b3e565b813561530d81614c37565b81528185013561531c81615288565b818601528352918301916040016152e1565b509695505050505050565b600080600060a0848603121561534e57600080fd5b6153588585614df6565b9250606084013561536881615288565b915060808401356001600160401b0381111561538357600080fd5b61538f8682870161529d565b9150509250925092565b600082601f8301126153aa57600080fd5b813560206153ba6151b88361513c565b828152606092830285018201928282019190878511156153d957600080fd5b8387015b858110156153fc576153ef8982614df6565b84529284019281016153dd565b5090979650505050505050565b600082601f83011261541a57600080fd5b8135602061542a6151b88361513c565b82815260059290921b8401810191818101908684111561544957600080fd5b8286015b8481101561532e57803561546081615288565b835291830191830161544d565b600082601f83011261547e57600080fd5b8135602061548e6151b88361513c565b82815260059290921b840181019181810190868411156154ad57600080fd5b8286015b8481101561532e5780356001600160401b038111156154d05760008081fd5b6154de8986838b010161529d565b8452509183019183016154b1565b600080600080600080600080610100898b03121561550957600080fd5b61551289614c4c565b975061552060208a01614c4c565b965061552e60408a01614c4c565b955061553c60608a01614c4c565b94506080890135935060a08901356001600160401b038082111561555f57600080fd5b61556b8c838d01615399565b945060c08b013591508082111561558157600080fd5b61558d8c838d01615409565b935060e08b01359150808211156155a357600080fd5b506155b08b828c0161546d565b9150509295985092959890939650565b6000604082840312156155d257600080fd5b6155da614b3e565b90506155e582614c9b565b815260208201356155f581614c37565b602082015292915050565b6000806000806080858703121561561657600080fd5b843593506020808601356001600160401b0381111561563457600080fd5b8601601f8101881361564557600080fd5b80356156536151b88261513c565b81815260069190911b8201830190838101908a83111561567257600080fd5b928401925b8284101561569b576156898b856155c0565b82528482019150604084019350615677565b979a97995050505060408601359560600135949350505050565b60208101610e8f8284614da0565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561573a5761573a615710565b5060010190565b60005b8381101561575c578181015183820152602001615744565b838111156109305750506000910152565b60008151808452615785816020860160208601615741565b601f01601f19169290920160200192915050565b602081526000612abe602083018461576d565b6000602082840312156157be57600080fd5b8151612abe81614c37565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561582557600080fd5b81518015158114612abe57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261589457600080fd5b8301803591506001600160401b038211156158ae57600080fd5b6020019150600581901b36038213156146f457600080fd5b6000602082840312156158d857600080fd5b8151612abe81614ab6565b600082198211156158f6576158f6615710565b500190565b6000808585111561590b57600080fd5b8386111561591857600080fd5b5050820193919092039150565b60006040828403121561593757600080fd5b612abe83836155c0565b60008282101561595357615953615710565b500390565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b818110156159b5578551805160ff1684528501516001600160a01b0316858401529484019491830191600101615984565b5050606086019790975250505050608001529392505050565b600083516159e0818460208801615741565b6001600160f81b0319939093169190920190815260010192915050565b60018060a01b03841681528260208201526060604082015260006123e0606083018461576d565b600060208284031215615a3657600080fd5b81516001600160c01b0381168114612abe57600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615a7257615a72615a4d565b500690565b6001600160a01b0383168152604060208201819052600090614c2f9083018461576d565b828152604060208201526000614c2f604083018461576d565b600060208284031215615ac657600080fd5b5051919050565b6001600160a01b03841681526101608101615af5602083018580358252602090810135910152565b615b0f606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615b7660a084018261576d565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906123e09083018486615b97565b60018060a01b0385168152836020820152606060408201526000615c0d606083018486615b97565b9695505050505050565b600082601f830112615c2857600080fd5b81516020615c386151b88361513c565b82815260059290921b84018101918181019086841115615c5757600080fd5b8286015b8481101561532e578051615c6e81615288565b8352918301918301615c5b565b60008060408385031215615c8e57600080fd5b82516001600160401b0380821115615ca557600080fd5b615cb186838701615c17565b93506020850151915080821115615cc757600080fd5b50615cd485828601615c17565b9150509250929050565b8381526040602082015260006123e0604083018486615b97565b60006020808385031215615d0b57600080fd5b82516001600160401b03811115615d2157600080fd5b8301601f81018513615d3257600080fd5b8051615d406151b88261513c565b81815260059190911b82018301908381019087831115615d5f57600080fd5b928401925b82841015615d86578351615d7781614ab6565b82529284019290840190615d64565b979650505050505050565b600060208284031215615da357600080fd5b8151612abe81615288565b600060ff821660ff84168060ff03821115615dcb57615dcb615710565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e3c57865180516001600160a01b031684528601518516868401529585019591830191600101615e0c565b50909a9950505050505050505050565b600060208284031215615e5e57600080fd5b81516001600160e01b031981168114612abe57600080fd5b60006001600160601b0380831681851681830481118215151615615e9c57615e9c615710565b02949350505050565b60006001600160601b0380841680615ebf57615ebf615a4d565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd475265676973747279436f6f7264696e61746f722e5f646572656769737465724fa2646970667358221220785b8274927864f5c270faebdf48de69206d823e5f75c8a0c3fac5e86bb1e12664736f6c634300080c0033", +} + +// ContractRegistryCoordinatorABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractRegistryCoordinatorMetaData.ABI instead. +var ContractRegistryCoordinatorABI = ContractRegistryCoordinatorMetaData.ABI + +// ContractRegistryCoordinatorBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ContractRegistryCoordinatorMetaData.Bin instead. +var ContractRegistryCoordinatorBin = ContractRegistryCoordinatorMetaData.Bin + +// DeployContractRegistryCoordinator deploys a new Ethereum contract, binding an instance of ContractRegistryCoordinator to it. +func DeployContractRegistryCoordinator(auth *bind.TransactOpts, backend bind.ContractBackend, _serviceManager common.Address, _stakeRegistry common.Address, _blsApkRegistry common.Address, _indexRegistry common.Address) (common.Address, *types.Transaction, *ContractRegistryCoordinator, error) { + parsed, err := ContractRegistryCoordinatorMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractRegistryCoordinatorBin), backend, _serviceManager, _stakeRegistry, _blsApkRegistry, _indexRegistry) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ContractRegistryCoordinator{ContractRegistryCoordinatorCaller: ContractRegistryCoordinatorCaller{contract: contract}, ContractRegistryCoordinatorTransactor: ContractRegistryCoordinatorTransactor{contract: contract}, ContractRegistryCoordinatorFilterer: ContractRegistryCoordinatorFilterer{contract: contract}}, nil +} + +// ContractRegistryCoordinator is an auto generated Go binding around an Ethereum contract. +type ContractRegistryCoordinator struct { + ContractRegistryCoordinatorCaller // Read-only binding to the contract + ContractRegistryCoordinatorTransactor // Write-only binding to the contract + ContractRegistryCoordinatorFilterer // Log filterer for contract events +} + +// ContractRegistryCoordinatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractRegistryCoordinatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractRegistryCoordinatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractRegistryCoordinatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractRegistryCoordinatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractRegistryCoordinatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractRegistryCoordinatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractRegistryCoordinatorSession struct { + Contract *ContractRegistryCoordinator // 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 +} + +// ContractRegistryCoordinatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractRegistryCoordinatorCallerSession struct { + Contract *ContractRegistryCoordinatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractRegistryCoordinatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractRegistryCoordinatorTransactorSession struct { + Contract *ContractRegistryCoordinatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractRegistryCoordinatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractRegistryCoordinatorRaw struct { + Contract *ContractRegistryCoordinator // Generic contract binding to access the raw methods on +} + +// ContractRegistryCoordinatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractRegistryCoordinatorCallerRaw struct { + Contract *ContractRegistryCoordinatorCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractRegistryCoordinatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractRegistryCoordinatorTransactorRaw struct { + Contract *ContractRegistryCoordinatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractRegistryCoordinator creates a new instance of ContractRegistryCoordinator, bound to a specific deployed contract. +func NewContractRegistryCoordinator(address common.Address, backend bind.ContractBackend) (*ContractRegistryCoordinator, error) { + contract, err := bindContractRegistryCoordinator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinator{ContractRegistryCoordinatorCaller: ContractRegistryCoordinatorCaller{contract: contract}, ContractRegistryCoordinatorTransactor: ContractRegistryCoordinatorTransactor{contract: contract}, ContractRegistryCoordinatorFilterer: ContractRegistryCoordinatorFilterer{contract: contract}}, nil +} + +// NewContractRegistryCoordinatorCaller creates a new read-only instance of ContractRegistryCoordinator, bound to a specific deployed contract. +func NewContractRegistryCoordinatorCaller(address common.Address, caller bind.ContractCaller) (*ContractRegistryCoordinatorCaller, error) { + contract, err := bindContractRegistryCoordinator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorCaller{contract: contract}, nil +} + +// NewContractRegistryCoordinatorTransactor creates a new write-only instance of ContractRegistryCoordinator, bound to a specific deployed contract. +func NewContractRegistryCoordinatorTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractRegistryCoordinatorTransactor, error) { + contract, err := bindContractRegistryCoordinator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorTransactor{contract: contract}, nil +} + +// NewContractRegistryCoordinatorFilterer creates a new log filterer instance of ContractRegistryCoordinator, bound to a specific deployed contract. +func NewContractRegistryCoordinatorFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractRegistryCoordinatorFilterer, error) { + contract, err := bindContractRegistryCoordinator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorFilterer{contract: contract}, nil +} + +// bindContractRegistryCoordinator binds a generic wrapper to an already deployed contract. +func bindContractRegistryCoordinator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractRegistryCoordinatorMetaData.GetAbi() + 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 (_ContractRegistryCoordinator *ContractRegistryCoordinatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractRegistryCoordinator.Contract.ContractRegistryCoordinatorCaller.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 (_ContractRegistryCoordinator *ContractRegistryCoordinatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.ContractRegistryCoordinatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.ContractRegistryCoordinatorTransactor.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 (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractRegistryCoordinator.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 (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.contract.Transact(opts, method, params...) +} + +// OPERATORCHURNAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0xca0de882. +// +// Solidity: function OPERATOR_CHURN_APPROVAL_TYPEHASH() view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) OPERATORCHURNAPPROVALTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "OPERATOR_CHURN_APPROVAL_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// OPERATORCHURNAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0xca0de882. +// +// Solidity: function OPERATOR_CHURN_APPROVAL_TYPEHASH() view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) OPERATORCHURNAPPROVALTYPEHASH() ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.OPERATORCHURNAPPROVALTYPEHASH(&_ContractRegistryCoordinator.CallOpts) +} + +// OPERATORCHURNAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0xca0de882. +// +// Solidity: function OPERATOR_CHURN_APPROVAL_TYPEHASH() view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) OPERATORCHURNAPPROVALTYPEHASH() ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.OPERATORCHURNAPPROVALTYPEHASH(&_ContractRegistryCoordinator.CallOpts) +} + +// PUBKEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0x9feab859. +// +// Solidity: function PUBKEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) PUBKEYREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "PUBKEY_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PUBKEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0x9feab859. +// +// Solidity: function PUBKEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) PUBKEYREGISTRATIONTYPEHASH() ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.PUBKEYREGISTRATIONTYPEHASH(&_ContractRegistryCoordinator.CallOpts) +} + +// PUBKEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0x9feab859. +// +// Solidity: function PUBKEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) PUBKEYREGISTRATIONTYPEHASH() ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.PUBKEYREGISTRATIONTYPEHASH(&_ContractRegistryCoordinator.CallOpts) +} + +// BlsApkRegistry is a free data retrieval call binding the contract method 0x5df45946. +// +// Solidity: function blsApkRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) BlsApkRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "blsApkRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BlsApkRegistry is a free data retrieval call binding the contract method 0x5df45946. +// +// Solidity: function blsApkRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) BlsApkRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.BlsApkRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// BlsApkRegistry is a free data retrieval call binding the contract method 0x5df45946. +// +// Solidity: function blsApkRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) BlsApkRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.BlsApkRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// CalculateOperatorChurnApprovalDigestHash is a free data retrieval call binding the contract method 0xf8581191. +// +// Solidity: function calculateOperatorChurnApprovalDigestHash(bytes32 registeringOperatorId, (uint8,address)[] operatorKickParams, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) CalculateOperatorChurnApprovalDigestHash(opts *bind.CallOpts, registeringOperatorId [32]byte, operatorKickParams []IRegistryCoordinatorOperatorKickParam, salt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "calculateOperatorChurnApprovalDigestHash", registeringOperatorId, operatorKickParams, salt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateOperatorChurnApprovalDigestHash is a free data retrieval call binding the contract method 0xf8581191. +// +// Solidity: function calculateOperatorChurnApprovalDigestHash(bytes32 registeringOperatorId, (uint8,address)[] operatorKickParams, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) CalculateOperatorChurnApprovalDigestHash(registeringOperatorId [32]byte, operatorKickParams []IRegistryCoordinatorOperatorKickParam, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.CalculateOperatorChurnApprovalDigestHash(&_ContractRegistryCoordinator.CallOpts, registeringOperatorId, operatorKickParams, salt, expiry) +} + +// CalculateOperatorChurnApprovalDigestHash is a free data retrieval call binding the contract method 0xf8581191. +// +// Solidity: function calculateOperatorChurnApprovalDigestHash(bytes32 registeringOperatorId, (uint8,address)[] operatorKickParams, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) CalculateOperatorChurnApprovalDigestHash(registeringOperatorId [32]byte, operatorKickParams []IRegistryCoordinatorOperatorKickParam, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.CalculateOperatorChurnApprovalDigestHash(&_ContractRegistryCoordinator.CallOpts, registeringOperatorId, operatorKickParams, salt, expiry) +} + +// ChurnApprover is a free data retrieval call binding the contract method 0x054310e6. +// +// Solidity: function churnApprover() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) ChurnApprover(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "churnApprover") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ChurnApprover is a free data retrieval call binding the contract method 0x054310e6. +// +// Solidity: function churnApprover() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) ChurnApprover() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.ChurnApprover(&_ContractRegistryCoordinator.CallOpts) +} + +// ChurnApprover is a free data retrieval call binding the contract method 0x054310e6. +// +// Solidity: function churnApprover() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) ChurnApprover() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.ChurnApprover(&_ContractRegistryCoordinator.CallOpts) +} + +// Ejector is a free data retrieval call binding the contract method 0x28f61b31. +// +// Solidity: function ejector() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) Ejector(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "ejector") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Ejector is a free data retrieval call binding the contract method 0x28f61b31. +// +// Solidity: function ejector() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Ejector() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.Ejector(&_ContractRegistryCoordinator.CallOpts) +} + +// Ejector is a free data retrieval call binding the contract method 0x28f61b31. +// +// Solidity: function ejector() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) Ejector() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.Ejector(&_ContractRegistryCoordinator.CallOpts) +} + +// GetCurrentQuorumBitmap is a free data retrieval call binding the contract method 0x871ef049. +// +// Solidity: function getCurrentQuorumBitmap(bytes32 operatorId) view returns(uint192) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetCurrentQuorumBitmap(opts *bind.CallOpts, operatorId [32]byte) (*big.Int, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getCurrentQuorumBitmap", operatorId) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetCurrentQuorumBitmap is a free data retrieval call binding the contract method 0x871ef049. +// +// Solidity: function getCurrentQuorumBitmap(bytes32 operatorId) view returns(uint192) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetCurrentQuorumBitmap(operatorId [32]byte) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.GetCurrentQuorumBitmap(&_ContractRegistryCoordinator.CallOpts, operatorId) +} + +// GetCurrentQuorumBitmap is a free data retrieval call binding the contract method 0x871ef049. +// +// Solidity: function getCurrentQuorumBitmap(bytes32 operatorId) view returns(uint192) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetCurrentQuorumBitmap(operatorId [32]byte) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.GetCurrentQuorumBitmap(&_ContractRegistryCoordinator.CallOpts, operatorId) +} + +// GetOperator is a free data retrieval call binding the contract method 0x5865c60c. +// +// Solidity: function getOperator(address operator) view returns((bytes32,uint8)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetOperator(opts *bind.CallOpts, operator common.Address) (IRegistryCoordinatorOperatorInfo, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getOperator", operator) + + if err != nil { + return *new(IRegistryCoordinatorOperatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IRegistryCoordinatorOperatorInfo)).(*IRegistryCoordinatorOperatorInfo) + + return out0, err + +} + +// GetOperator is a free data retrieval call binding the contract method 0x5865c60c. +// +// Solidity: function getOperator(address operator) view returns((bytes32,uint8)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetOperator(operator common.Address) (IRegistryCoordinatorOperatorInfo, error) { + return _ContractRegistryCoordinator.Contract.GetOperator(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// GetOperator is a free data retrieval call binding the contract method 0x5865c60c. +// +// Solidity: function getOperator(address operator) view returns((bytes32,uint8)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetOperator(operator common.Address) (IRegistryCoordinatorOperatorInfo, error) { + return _ContractRegistryCoordinator.Contract.GetOperator(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// GetOperatorFromId is a free data retrieval call binding the contract method 0x296bb064. +// +// Solidity: function getOperatorFromId(bytes32 operatorId) view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetOperatorFromId(opts *bind.CallOpts, operatorId [32]byte) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getOperatorFromId", operatorId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetOperatorFromId is a free data retrieval call binding the contract method 0x296bb064. +// +// Solidity: function getOperatorFromId(bytes32 operatorId) view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetOperatorFromId(operatorId [32]byte) (common.Address, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorFromId(&_ContractRegistryCoordinator.CallOpts, operatorId) +} + +// GetOperatorFromId is a free data retrieval call binding the contract method 0x296bb064. +// +// Solidity: function getOperatorFromId(bytes32 operatorId) view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetOperatorFromId(operatorId [32]byte) (common.Address, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorFromId(&_ContractRegistryCoordinator.CallOpts, operatorId) +} + +// GetOperatorId is a free data retrieval call binding the contract method 0x13542a4e. +// +// Solidity: function getOperatorId(address operator) view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetOperatorId(opts *bind.CallOpts, operator common.Address) ([32]byte, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getOperatorId", operator) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetOperatorId is a free data retrieval call binding the contract method 0x13542a4e. +// +// Solidity: function getOperatorId(address operator) view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetOperatorId(operator common.Address) ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorId(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// GetOperatorId is a free data retrieval call binding the contract method 0x13542a4e. +// +// Solidity: function getOperatorId(address operator) view returns(bytes32) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetOperatorId(operator common.Address) ([32]byte, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorId(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// GetOperatorSetParams is a free data retrieval call binding the contract method 0xe65797ad. +// +// Solidity: function getOperatorSetParams(uint8 quorumNumber) view returns((uint32,uint16,uint16)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetOperatorSetParams(opts *bind.CallOpts, quorumNumber uint8) (IRegistryCoordinatorOperatorSetParam, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getOperatorSetParams", quorumNumber) + + if err != nil { + return *new(IRegistryCoordinatorOperatorSetParam), err + } + + out0 := *abi.ConvertType(out[0], new(IRegistryCoordinatorOperatorSetParam)).(*IRegistryCoordinatorOperatorSetParam) + + return out0, err + +} + +// GetOperatorSetParams is a free data retrieval call binding the contract method 0xe65797ad. +// +// Solidity: function getOperatorSetParams(uint8 quorumNumber) view returns((uint32,uint16,uint16)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetOperatorSetParams(quorumNumber uint8) (IRegistryCoordinatorOperatorSetParam, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorSetParams(&_ContractRegistryCoordinator.CallOpts, quorumNumber) +} + +// GetOperatorSetParams is a free data retrieval call binding the contract method 0xe65797ad. +// +// Solidity: function getOperatorSetParams(uint8 quorumNumber) view returns((uint32,uint16,uint16)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetOperatorSetParams(quorumNumber uint8) (IRegistryCoordinatorOperatorSetParam, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorSetParams(&_ContractRegistryCoordinator.CallOpts, quorumNumber) +} + +// GetOperatorStatus is a free data retrieval call binding the contract method 0xfd39105a. +// +// Solidity: function getOperatorStatus(address operator) view returns(uint8) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetOperatorStatus(opts *bind.CallOpts, operator common.Address) (uint8, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getOperatorStatus", operator) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetOperatorStatus is a free data retrieval call binding the contract method 0xfd39105a. +// +// Solidity: function getOperatorStatus(address operator) view returns(uint8) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetOperatorStatus(operator common.Address) (uint8, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorStatus(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// GetOperatorStatus is a free data retrieval call binding the contract method 0xfd39105a. +// +// Solidity: function getOperatorStatus(address operator) view returns(uint8) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetOperatorStatus(operator common.Address) (uint8, error) { + return _ContractRegistryCoordinator.Contract.GetOperatorStatus(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// GetQuorumBitmapAtBlockNumberByIndex is a free data retrieval call binding the contract method 0x04ec6351. +// +// Solidity: function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) view returns(uint192) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetQuorumBitmapAtBlockNumberByIndex(opts *bind.CallOpts, operatorId [32]byte, blockNumber uint32, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getQuorumBitmapAtBlockNumberByIndex", operatorId, blockNumber, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetQuorumBitmapAtBlockNumberByIndex is a free data retrieval call binding the contract method 0x04ec6351. +// +// Solidity: function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) view returns(uint192) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetQuorumBitmapAtBlockNumberByIndex(operatorId [32]byte, blockNumber uint32, index *big.Int) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapAtBlockNumberByIndex(&_ContractRegistryCoordinator.CallOpts, operatorId, blockNumber, index) +} + +// GetQuorumBitmapAtBlockNumberByIndex is a free data retrieval call binding the contract method 0x04ec6351. +// +// Solidity: function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) view returns(uint192) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetQuorumBitmapAtBlockNumberByIndex(operatorId [32]byte, blockNumber uint32, index *big.Int) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapAtBlockNumberByIndex(&_ContractRegistryCoordinator.CallOpts, operatorId, blockNumber, index) +} + +// GetQuorumBitmapHistoryLength is a free data retrieval call binding the contract method 0x03fd3492. +// +// Solidity: function getQuorumBitmapHistoryLength(bytes32 operatorId) view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetQuorumBitmapHistoryLength(opts *bind.CallOpts, operatorId [32]byte) (*big.Int, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getQuorumBitmapHistoryLength", operatorId) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetQuorumBitmapHistoryLength is a free data retrieval call binding the contract method 0x03fd3492. +// +// Solidity: function getQuorumBitmapHistoryLength(bytes32 operatorId) view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetQuorumBitmapHistoryLength(operatorId [32]byte) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapHistoryLength(&_ContractRegistryCoordinator.CallOpts, operatorId) +} + +// GetQuorumBitmapHistoryLength is a free data retrieval call binding the contract method 0x03fd3492. +// +// Solidity: function getQuorumBitmapHistoryLength(bytes32 operatorId) view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetQuorumBitmapHistoryLength(operatorId [32]byte) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapHistoryLength(&_ContractRegistryCoordinator.CallOpts, operatorId) +} + +// GetQuorumBitmapIndicesAtBlockNumber is a free data retrieval call binding the contract method 0xc391425e. +// +// Solidity: function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] operatorIds) view returns(uint32[]) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetQuorumBitmapIndicesAtBlockNumber(opts *bind.CallOpts, blockNumber uint32, operatorIds [][32]byte) ([]uint32, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getQuorumBitmapIndicesAtBlockNumber", blockNumber, operatorIds) + + if err != nil { + return *new([]uint32), err + } + + out0 := *abi.ConvertType(out[0], new([]uint32)).(*[]uint32) + + return out0, err + +} + +// GetQuorumBitmapIndicesAtBlockNumber is a free data retrieval call binding the contract method 0xc391425e. +// +// Solidity: function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] operatorIds) view returns(uint32[]) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetQuorumBitmapIndicesAtBlockNumber(blockNumber uint32, operatorIds [][32]byte) ([]uint32, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapIndicesAtBlockNumber(&_ContractRegistryCoordinator.CallOpts, blockNumber, operatorIds) +} + +// GetQuorumBitmapIndicesAtBlockNumber is a free data retrieval call binding the contract method 0xc391425e. +// +// Solidity: function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] operatorIds) view returns(uint32[]) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetQuorumBitmapIndicesAtBlockNumber(blockNumber uint32, operatorIds [][32]byte) ([]uint32, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapIndicesAtBlockNumber(&_ContractRegistryCoordinator.CallOpts, blockNumber, operatorIds) +} + +// GetQuorumBitmapUpdateByIndex is a free data retrieval call binding the contract method 0x1eb812da. +// +// Solidity: function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint192)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) GetQuorumBitmapUpdateByIndex(opts *bind.CallOpts, operatorId [32]byte, index *big.Int) (IRegistryCoordinatorQuorumBitmapUpdate, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "getQuorumBitmapUpdateByIndex", operatorId, index) + + if err != nil { + return *new(IRegistryCoordinatorQuorumBitmapUpdate), err + } + + out0 := *abi.ConvertType(out[0], new(IRegistryCoordinatorQuorumBitmapUpdate)).(*IRegistryCoordinatorQuorumBitmapUpdate) + + return out0, err + +} + +// GetQuorumBitmapUpdateByIndex is a free data retrieval call binding the contract method 0x1eb812da. +// +// Solidity: function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint192)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) GetQuorumBitmapUpdateByIndex(operatorId [32]byte, index *big.Int) (IRegistryCoordinatorQuorumBitmapUpdate, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapUpdateByIndex(&_ContractRegistryCoordinator.CallOpts, operatorId, index) +} + +// GetQuorumBitmapUpdateByIndex is a free data retrieval call binding the contract method 0x1eb812da. +// +// Solidity: function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint192)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) GetQuorumBitmapUpdateByIndex(operatorId [32]byte, index *big.Int) (IRegistryCoordinatorQuorumBitmapUpdate, error) { + return _ContractRegistryCoordinator.Contract.GetQuorumBitmapUpdateByIndex(&_ContractRegistryCoordinator.CallOpts, operatorId, index) +} + +// IndexRegistry is a free data retrieval call binding the contract method 0x9e9923c2. +// +// Solidity: function indexRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) IndexRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "indexRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// IndexRegistry is a free data retrieval call binding the contract method 0x9e9923c2. +// +// Solidity: function indexRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) IndexRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.IndexRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// IndexRegistry is a free data retrieval call binding the contract method 0x9e9923c2. +// +// Solidity: function indexRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) IndexRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.IndexRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// IsChurnApproverSaltUsed is a free data retrieval call binding the contract method 0x1478851f. +// +// Solidity: function isChurnApproverSaltUsed(bytes32 ) view returns(bool) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) IsChurnApproverSaltUsed(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "isChurnApproverSaltUsed", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsChurnApproverSaltUsed is a free data retrieval call binding the contract method 0x1478851f. +// +// Solidity: function isChurnApproverSaltUsed(bytes32 ) view returns(bool) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) IsChurnApproverSaltUsed(arg0 [32]byte) (bool, error) { + return _ContractRegistryCoordinator.Contract.IsChurnApproverSaltUsed(&_ContractRegistryCoordinator.CallOpts, arg0) +} + +// IsChurnApproverSaltUsed is a free data retrieval call binding the contract method 0x1478851f. +// +// Solidity: function isChurnApproverSaltUsed(bytes32 ) view returns(bool) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) IsChurnApproverSaltUsed(arg0 [32]byte) (bool, error) { + return _ContractRegistryCoordinator.Contract.IsChurnApproverSaltUsed(&_ContractRegistryCoordinator.CallOpts, arg0) +} + +// NumRegistries is a free data retrieval call binding the contract method 0xd72d8dd6. +// +// Solidity: function numRegistries() view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) NumRegistries(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "numRegistries") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NumRegistries is a free data retrieval call binding the contract method 0xd72d8dd6. +// +// Solidity: function numRegistries() view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) NumRegistries() (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.NumRegistries(&_ContractRegistryCoordinator.CallOpts) +} + +// NumRegistries is a free data retrieval call binding the contract method 0xd72d8dd6. +// +// Solidity: function numRegistries() view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) NumRegistries() (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.NumRegistries(&_ContractRegistryCoordinator.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Owner() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.Owner(&_ContractRegistryCoordinator.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) Owner() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.Owner(&_ContractRegistryCoordinator.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "paused", index) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Paused(index uint8) (bool, error) { + return _ContractRegistryCoordinator.Contract.Paused(&_ContractRegistryCoordinator.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) Paused(index uint8) (bool, error) { + return _ContractRegistryCoordinator.Contract.Paused(&_ContractRegistryCoordinator.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "paused0") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Paused0() (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.Paused0(&_ContractRegistryCoordinator.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) Paused0() (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.Paused0(&_ContractRegistryCoordinator.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "pauserRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) PauserRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.PauserRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) PauserRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.PauserRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// PubkeyRegistrationMessageHash is a free data retrieval call binding the contract method 0x3c2a7f4c. +// +// Solidity: function pubkeyRegistrationMessageHash(address operator) view returns((uint256,uint256)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) PubkeyRegistrationMessageHash(opts *bind.CallOpts, operator common.Address) (BN254G1Point, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "pubkeyRegistrationMessageHash", operator) + + if err != nil { + return *new(BN254G1Point), err + } + + out0 := *abi.ConvertType(out[0], new(BN254G1Point)).(*BN254G1Point) + + return out0, err + +} + +// PubkeyRegistrationMessageHash is a free data retrieval call binding the contract method 0x3c2a7f4c. +// +// Solidity: function pubkeyRegistrationMessageHash(address operator) view returns((uint256,uint256)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) PubkeyRegistrationMessageHash(operator common.Address) (BN254G1Point, error) { + return _ContractRegistryCoordinator.Contract.PubkeyRegistrationMessageHash(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// PubkeyRegistrationMessageHash is a free data retrieval call binding the contract method 0x3c2a7f4c. +// +// Solidity: function pubkeyRegistrationMessageHash(address operator) view returns((uint256,uint256)) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) PubkeyRegistrationMessageHash(operator common.Address) (BN254G1Point, error) { + return _ContractRegistryCoordinator.Contract.PubkeyRegistrationMessageHash(&_ContractRegistryCoordinator.CallOpts, operator) +} + +// QuorumCount is a free data retrieval call binding the contract method 0x9aa1653d. +// +// Solidity: function quorumCount() view returns(uint8) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) QuorumCount(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "quorumCount") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// QuorumCount is a free data retrieval call binding the contract method 0x9aa1653d. +// +// Solidity: function quorumCount() view returns(uint8) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) QuorumCount() (uint8, error) { + return _ContractRegistryCoordinator.Contract.QuorumCount(&_ContractRegistryCoordinator.CallOpts) +} + +// QuorumCount is a free data retrieval call binding the contract method 0x9aa1653d. +// +// Solidity: function quorumCount() view returns(uint8) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) QuorumCount() (uint8, error) { + return _ContractRegistryCoordinator.Contract.QuorumCount(&_ContractRegistryCoordinator.CallOpts) +} + +// QuorumUpdateBlockNumber is a free data retrieval call binding the contract method 0x249a0c42. +// +// Solidity: function quorumUpdateBlockNumber(uint8 ) view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) QuorumUpdateBlockNumber(opts *bind.CallOpts, arg0 uint8) (*big.Int, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "quorumUpdateBlockNumber", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// QuorumUpdateBlockNumber is a free data retrieval call binding the contract method 0x249a0c42. +// +// Solidity: function quorumUpdateBlockNumber(uint8 ) view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) QuorumUpdateBlockNumber(arg0 uint8) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.QuorumUpdateBlockNumber(&_ContractRegistryCoordinator.CallOpts, arg0) +} + +// QuorumUpdateBlockNumber is a free data retrieval call binding the contract method 0x249a0c42. +// +// Solidity: function quorumUpdateBlockNumber(uint8 ) view returns(uint256) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) QuorumUpdateBlockNumber(arg0 uint8) (*big.Int, error) { + return _ContractRegistryCoordinator.Contract.QuorumUpdateBlockNumber(&_ContractRegistryCoordinator.CallOpts, arg0) +} + +// Registries is a free data retrieval call binding the contract method 0x6347c900. +// +// Solidity: function registries(uint256 ) view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) Registries(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "registries", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Registries is a free data retrieval call binding the contract method 0x6347c900. +// +// Solidity: function registries(uint256 ) view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Registries(arg0 *big.Int) (common.Address, error) { + return _ContractRegistryCoordinator.Contract.Registries(&_ContractRegistryCoordinator.CallOpts, arg0) +} + +// Registries is a free data retrieval call binding the contract method 0x6347c900. +// +// Solidity: function registries(uint256 ) view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) Registries(arg0 *big.Int) (common.Address, error) { + return _ContractRegistryCoordinator.Contract.Registries(&_ContractRegistryCoordinator.CallOpts, arg0) +} + +// ServiceManager is a free data retrieval call binding the contract method 0x3998fdd3. +// +// Solidity: function serviceManager() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) ServiceManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "serviceManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ServiceManager is a free data retrieval call binding the contract method 0x3998fdd3. +// +// Solidity: function serviceManager() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) ServiceManager() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.ServiceManager(&_ContractRegistryCoordinator.CallOpts) +} + +// ServiceManager is a free data retrieval call binding the contract method 0x3998fdd3. +// +// Solidity: function serviceManager() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) ServiceManager() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.ServiceManager(&_ContractRegistryCoordinator.CallOpts) +} + +// StakeRegistry is a free data retrieval call binding the contract method 0x68304835. +// +// Solidity: function stakeRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCaller) StakeRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractRegistryCoordinator.contract.Call(opts, &out, "stakeRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StakeRegistry is a free data retrieval call binding the contract method 0x68304835. +// +// Solidity: function stakeRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) StakeRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.StakeRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// StakeRegistry is a free data retrieval call binding the contract method 0x68304835. +// +// Solidity: function stakeRegistry() view returns(address) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorCallerSession) StakeRegistry() (common.Address, error) { + return _ContractRegistryCoordinator.Contract.StakeRegistry(&_ContractRegistryCoordinator.CallOpts) +} + +// CreateQuorum is a paid mutator transaction binding the contract method 0xd75b4c88. +// +// Solidity: function createQuorum((uint32,uint16,uint16) operatorSetParams, uint96 minimumStake, (address,uint96)[] strategyParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) CreateQuorum(opts *bind.TransactOpts, operatorSetParams IRegistryCoordinatorOperatorSetParam, minimumStake *big.Int, strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "createQuorum", operatorSetParams, minimumStake, strategyParams) +} + +// CreateQuorum is a paid mutator transaction binding the contract method 0xd75b4c88. +// +// Solidity: function createQuorum((uint32,uint16,uint16) operatorSetParams, uint96 minimumStake, (address,uint96)[] strategyParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) CreateQuorum(operatorSetParams IRegistryCoordinatorOperatorSetParam, minimumStake *big.Int, strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.CreateQuorum(&_ContractRegistryCoordinator.TransactOpts, operatorSetParams, minimumStake, strategyParams) +} + +// CreateQuorum is a paid mutator transaction binding the contract method 0xd75b4c88. +// +// Solidity: function createQuorum((uint32,uint16,uint16) operatorSetParams, uint96 minimumStake, (address,uint96)[] strategyParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) CreateQuorum(operatorSetParams IRegistryCoordinatorOperatorSetParam, minimumStake *big.Int, strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.CreateQuorum(&_ContractRegistryCoordinator.TransactOpts, operatorSetParams, minimumStake, strategyParams) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xca4f2d97. +// +// Solidity: function deregisterOperator(bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) DeregisterOperator(opts *bind.TransactOpts, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "deregisterOperator", quorumNumbers) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xca4f2d97. +// +// Solidity: function deregisterOperator(bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) DeregisterOperator(quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.DeregisterOperator(&_ContractRegistryCoordinator.TransactOpts, quorumNumbers) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xca4f2d97. +// +// Solidity: function deregisterOperator(bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) DeregisterOperator(quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.DeregisterOperator(&_ContractRegistryCoordinator.TransactOpts, quorumNumbers) +} + +// EjectOperator is a paid mutator transaction binding the contract method 0x6e3b17db. +// +// Solidity: function ejectOperator(address operator, bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) EjectOperator(opts *bind.TransactOpts, operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "ejectOperator", operator, quorumNumbers) +} + +// EjectOperator is a paid mutator transaction binding the contract method 0x6e3b17db. +// +// Solidity: function ejectOperator(address operator, bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) EjectOperator(operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.EjectOperator(&_ContractRegistryCoordinator.TransactOpts, operator, quorumNumbers) +} + +// EjectOperator is a paid mutator transaction binding the contract method 0x6e3b17db. +// +// Solidity: function ejectOperator(address operator, bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) EjectOperator(operator common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.EjectOperator(&_ContractRegistryCoordinator.TransactOpts, operator, quorumNumbers) +} + +// Initialize is a paid mutator transaction binding the contract method 0xdd8283f3. +// +// Solidity: function initialize(address _initialOwner, address _churnApprover, address _ejector, address _pauserRegistry, uint256 _initialPausedStatus, (uint32,uint16,uint16)[] _operatorSetParams, uint96[] _minimumStakes, (address,uint96)[][] _strategyParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) Initialize(opts *bind.TransactOpts, _initialOwner common.Address, _churnApprover common.Address, _ejector common.Address, _pauserRegistry common.Address, _initialPausedStatus *big.Int, _operatorSetParams []IRegistryCoordinatorOperatorSetParam, _minimumStakes []*big.Int, _strategyParams [][]IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "initialize", _initialOwner, _churnApprover, _ejector, _pauserRegistry, _initialPausedStatus, _operatorSetParams, _minimumStakes, _strategyParams) +} + +// Initialize is a paid mutator transaction binding the contract method 0xdd8283f3. +// +// Solidity: function initialize(address _initialOwner, address _churnApprover, address _ejector, address _pauserRegistry, uint256 _initialPausedStatus, (uint32,uint16,uint16)[] _operatorSetParams, uint96[] _minimumStakes, (address,uint96)[][] _strategyParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Initialize(_initialOwner common.Address, _churnApprover common.Address, _ejector common.Address, _pauserRegistry common.Address, _initialPausedStatus *big.Int, _operatorSetParams []IRegistryCoordinatorOperatorSetParam, _minimumStakes []*big.Int, _strategyParams [][]IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.Initialize(&_ContractRegistryCoordinator.TransactOpts, _initialOwner, _churnApprover, _ejector, _pauserRegistry, _initialPausedStatus, _operatorSetParams, _minimumStakes, _strategyParams) +} + +// Initialize is a paid mutator transaction binding the contract method 0xdd8283f3. +// +// Solidity: function initialize(address _initialOwner, address _churnApprover, address _ejector, address _pauserRegistry, uint256 _initialPausedStatus, (uint32,uint16,uint16)[] _operatorSetParams, uint96[] _minimumStakes, (address,uint96)[][] _strategyParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) Initialize(_initialOwner common.Address, _churnApprover common.Address, _ejector common.Address, _pauserRegistry common.Address, _initialPausedStatus *big.Int, _operatorSetParams []IRegistryCoordinatorOperatorSetParam, _minimumStakes []*big.Int, _strategyParams [][]IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.Initialize(&_ContractRegistryCoordinator.TransactOpts, _initialOwner, _churnApprover, _ejector, _pauserRegistry, _initialPausedStatus, _operatorSetParams, _minimumStakes, _strategyParams) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.Pause(&_ContractRegistryCoordinator.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.Pause(&_ContractRegistryCoordinator.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) PauseAll() (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.PauseAll(&_ContractRegistryCoordinator.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) PauseAll() (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.PauseAll(&_ContractRegistryCoordinator.TransactOpts) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0xa50857bf. +// +// Solidity: function registerOperator(bytes quorumNumbers, string socket, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) RegisterOperator(opts *bind.TransactOpts, quorumNumbers []byte, socket string, params IBLSApkRegistryPubkeyRegistrationParams, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "registerOperator", quorumNumbers, socket, params, operatorSignature) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0xa50857bf. +// +// Solidity: function registerOperator(bytes quorumNumbers, string socket, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) RegisterOperator(quorumNumbers []byte, socket string, params IBLSApkRegistryPubkeyRegistrationParams, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.RegisterOperator(&_ContractRegistryCoordinator.TransactOpts, quorumNumbers, socket, params, operatorSignature) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0xa50857bf. +// +// Solidity: function registerOperator(bytes quorumNumbers, string socket, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) RegisterOperator(quorumNumbers []byte, socket string, params IBLSApkRegistryPubkeyRegistrationParams, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.RegisterOperator(&_ContractRegistryCoordinator.TransactOpts, quorumNumbers, socket, params, operatorSignature) +} + +// RegisterOperatorWithChurn is a paid mutator transaction binding the contract method 0x9b5d177b. +// +// Solidity: function registerOperatorWithChurn(bytes quorumNumbers, string socket, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (uint8,address)[] operatorKickParams, (bytes,bytes32,uint256) churnApproverSignature, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) RegisterOperatorWithChurn(opts *bind.TransactOpts, quorumNumbers []byte, socket string, params IBLSApkRegistryPubkeyRegistrationParams, operatorKickParams []IRegistryCoordinatorOperatorKickParam, churnApproverSignature ISignatureUtilsSignatureWithSaltAndExpiry, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "registerOperatorWithChurn", quorumNumbers, socket, params, operatorKickParams, churnApproverSignature, operatorSignature) +} + +// RegisterOperatorWithChurn is a paid mutator transaction binding the contract method 0x9b5d177b. +// +// Solidity: function registerOperatorWithChurn(bytes quorumNumbers, string socket, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (uint8,address)[] operatorKickParams, (bytes,bytes32,uint256) churnApproverSignature, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) RegisterOperatorWithChurn(quorumNumbers []byte, socket string, params IBLSApkRegistryPubkeyRegistrationParams, operatorKickParams []IRegistryCoordinatorOperatorKickParam, churnApproverSignature ISignatureUtilsSignatureWithSaltAndExpiry, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.RegisterOperatorWithChurn(&_ContractRegistryCoordinator.TransactOpts, quorumNumbers, socket, params, operatorKickParams, churnApproverSignature, operatorSignature) +} + +// RegisterOperatorWithChurn is a paid mutator transaction binding the contract method 0x9b5d177b. +// +// Solidity: function registerOperatorWithChurn(bytes quorumNumbers, string socket, ((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])) params, (uint8,address)[] operatorKickParams, (bytes,bytes32,uint256) churnApproverSignature, (bytes,bytes32,uint256) operatorSignature) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) RegisterOperatorWithChurn(quorumNumbers []byte, socket string, params IBLSApkRegistryPubkeyRegistrationParams, operatorKickParams []IRegistryCoordinatorOperatorKickParam, churnApproverSignature ISignatureUtilsSignatureWithSaltAndExpiry, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.RegisterOperatorWithChurn(&_ContractRegistryCoordinator.TransactOpts, quorumNumbers, socket, params, operatorKickParams, churnApproverSignature, operatorSignature) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) RenounceOwnership() (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.RenounceOwnership(&_ContractRegistryCoordinator.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.RenounceOwnership(&_ContractRegistryCoordinator.TransactOpts) +} + +// SetChurnApprover is a paid mutator transaction binding the contract method 0x29d1e0c3. +// +// Solidity: function setChurnApprover(address _churnApprover) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) SetChurnApprover(opts *bind.TransactOpts, _churnApprover common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "setChurnApprover", _churnApprover) +} + +// SetChurnApprover is a paid mutator transaction binding the contract method 0x29d1e0c3. +// +// Solidity: function setChurnApprover(address _churnApprover) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) SetChurnApprover(_churnApprover common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetChurnApprover(&_ContractRegistryCoordinator.TransactOpts, _churnApprover) +} + +// SetChurnApprover is a paid mutator transaction binding the contract method 0x29d1e0c3. +// +// Solidity: function setChurnApprover(address _churnApprover) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) SetChurnApprover(_churnApprover common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetChurnApprover(&_ContractRegistryCoordinator.TransactOpts, _churnApprover) +} + +// SetEjector is a paid mutator transaction binding the contract method 0x2cdd1e86. +// +// Solidity: function setEjector(address _ejector) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) SetEjector(opts *bind.TransactOpts, _ejector common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "setEjector", _ejector) +} + +// SetEjector is a paid mutator transaction binding the contract method 0x2cdd1e86. +// +// Solidity: function setEjector(address _ejector) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) SetEjector(_ejector common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetEjector(&_ContractRegistryCoordinator.TransactOpts, _ejector) +} + +// SetEjector is a paid mutator transaction binding the contract method 0x2cdd1e86. +// +// Solidity: function setEjector(address _ejector) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) SetEjector(_ejector common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetEjector(&_ContractRegistryCoordinator.TransactOpts, _ejector) +} + +// SetOperatorSetParams is a paid mutator transaction binding the contract method 0x5b0b829f. +// +// Solidity: function setOperatorSetParams(uint8 quorumNumber, (uint32,uint16,uint16) operatorSetParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) SetOperatorSetParams(opts *bind.TransactOpts, quorumNumber uint8, operatorSetParams IRegistryCoordinatorOperatorSetParam) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "setOperatorSetParams", quorumNumber, operatorSetParams) +} + +// SetOperatorSetParams is a paid mutator transaction binding the contract method 0x5b0b829f. +// +// Solidity: function setOperatorSetParams(uint8 quorumNumber, (uint32,uint16,uint16) operatorSetParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) SetOperatorSetParams(quorumNumber uint8, operatorSetParams IRegistryCoordinatorOperatorSetParam) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetOperatorSetParams(&_ContractRegistryCoordinator.TransactOpts, quorumNumber, operatorSetParams) +} + +// SetOperatorSetParams is a paid mutator transaction binding the contract method 0x5b0b829f. +// +// Solidity: function setOperatorSetParams(uint8 quorumNumber, (uint32,uint16,uint16) operatorSetParams) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) SetOperatorSetParams(quorumNumber uint8, operatorSetParams IRegistryCoordinatorOperatorSetParam) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetOperatorSetParams(&_ContractRegistryCoordinator.TransactOpts, quorumNumber, operatorSetParams) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "setPauserRegistry", newPauserRegistry) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetPauserRegistry(&_ContractRegistryCoordinator.TransactOpts, newPauserRegistry) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.SetPauserRegistry(&_ContractRegistryCoordinator.TransactOpts, newPauserRegistry) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.TransferOwnership(&_ContractRegistryCoordinator.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.TransferOwnership(&_ContractRegistryCoordinator.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.Unpause(&_ContractRegistryCoordinator.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.Unpause(&_ContractRegistryCoordinator.TransactOpts, newPausedStatus) +} + +// UpdateOperators is a paid mutator transaction binding the contract method 0x00cf2ab5. +// +// Solidity: function updateOperators(address[] operators) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) UpdateOperators(opts *bind.TransactOpts, operators []common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "updateOperators", operators) +} + +// UpdateOperators is a paid mutator transaction binding the contract method 0x00cf2ab5. +// +// Solidity: function updateOperators(address[] operators) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) UpdateOperators(operators []common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.UpdateOperators(&_ContractRegistryCoordinator.TransactOpts, operators) +} + +// UpdateOperators is a paid mutator transaction binding the contract method 0x00cf2ab5. +// +// Solidity: function updateOperators(address[] operators) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) UpdateOperators(operators []common.Address) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.UpdateOperators(&_ContractRegistryCoordinator.TransactOpts, operators) +} + +// UpdateOperatorsForQuorum is a paid mutator transaction binding the contract method 0x5140a548. +// +// Solidity: function updateOperatorsForQuorum(address[][] operatorsPerQuorum, bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) UpdateOperatorsForQuorum(opts *bind.TransactOpts, operatorsPerQuorum [][]common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "updateOperatorsForQuorum", operatorsPerQuorum, quorumNumbers) +} + +// UpdateOperatorsForQuorum is a paid mutator transaction binding the contract method 0x5140a548. +// +// Solidity: function updateOperatorsForQuorum(address[][] operatorsPerQuorum, bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) UpdateOperatorsForQuorum(operatorsPerQuorum [][]common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.UpdateOperatorsForQuorum(&_ContractRegistryCoordinator.TransactOpts, operatorsPerQuorum, quorumNumbers) +} + +// UpdateOperatorsForQuorum is a paid mutator transaction binding the contract method 0x5140a548. +// +// Solidity: function updateOperatorsForQuorum(address[][] operatorsPerQuorum, bytes quorumNumbers) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) UpdateOperatorsForQuorum(operatorsPerQuorum [][]common.Address, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.UpdateOperatorsForQuorum(&_ContractRegistryCoordinator.TransactOpts, operatorsPerQuorum, quorumNumbers) +} + +// UpdateSocket is a paid mutator transaction binding the contract method 0x0cf4b767. +// +// Solidity: function updateSocket(string socket) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactor) UpdateSocket(opts *bind.TransactOpts, socket string) (*types.Transaction, error) { + return _ContractRegistryCoordinator.contract.Transact(opts, "updateSocket", socket) +} + +// UpdateSocket is a paid mutator transaction binding the contract method 0x0cf4b767. +// +// Solidity: function updateSocket(string socket) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorSession) UpdateSocket(socket string) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.UpdateSocket(&_ContractRegistryCoordinator.TransactOpts, socket) +} + +// UpdateSocket is a paid mutator transaction binding the contract method 0x0cf4b767. +// +// Solidity: function updateSocket(string socket) returns() +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorTransactorSession) UpdateSocket(socket string) (*types.Transaction, error) { + return _ContractRegistryCoordinator.Contract.UpdateSocket(&_ContractRegistryCoordinator.TransactOpts, socket) +} + +// ContractRegistryCoordinatorChurnApproverUpdatedIterator is returned from FilterChurnApproverUpdated and is used to iterate over the raw logs and unpacked data for ChurnApproverUpdated events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorChurnApproverUpdatedIterator struct { + Event *ContractRegistryCoordinatorChurnApproverUpdated // 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 *ContractRegistryCoordinatorChurnApproverUpdatedIterator) 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(ContractRegistryCoordinatorChurnApproverUpdated) + 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(ContractRegistryCoordinatorChurnApproverUpdated) + 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 *ContractRegistryCoordinatorChurnApproverUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorChurnApproverUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorChurnApproverUpdated represents a ChurnApproverUpdated event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorChurnApproverUpdated struct { + PrevChurnApprover common.Address + NewChurnApprover common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterChurnApproverUpdated is a free log retrieval operation binding the contract event 0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c. +// +// Solidity: event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterChurnApproverUpdated(opts *bind.FilterOpts) (*ContractRegistryCoordinatorChurnApproverUpdatedIterator, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "ChurnApproverUpdated") + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorChurnApproverUpdatedIterator{contract: _ContractRegistryCoordinator.contract, event: "ChurnApproverUpdated", logs: logs, sub: sub}, nil +} + +// WatchChurnApproverUpdated is a free log subscription operation binding the contract event 0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c. +// +// Solidity: event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchChurnApproverUpdated(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorChurnApproverUpdated) (event.Subscription, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "ChurnApproverUpdated") + 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(ContractRegistryCoordinatorChurnApproverUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "ChurnApproverUpdated", 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 +} + +// ParseChurnApproverUpdated is a log parse operation binding the contract event 0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c. +// +// Solidity: event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseChurnApproverUpdated(log types.Log) (*ContractRegistryCoordinatorChurnApproverUpdated, error) { + event := new(ContractRegistryCoordinatorChurnApproverUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "ChurnApproverUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorEjectorUpdatedIterator is returned from FilterEjectorUpdated and is used to iterate over the raw logs and unpacked data for EjectorUpdated events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorEjectorUpdatedIterator struct { + Event *ContractRegistryCoordinatorEjectorUpdated // 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 *ContractRegistryCoordinatorEjectorUpdatedIterator) 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(ContractRegistryCoordinatorEjectorUpdated) + 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(ContractRegistryCoordinatorEjectorUpdated) + 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 *ContractRegistryCoordinatorEjectorUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorEjectorUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorEjectorUpdated represents a EjectorUpdated event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorEjectorUpdated struct { + PrevEjector common.Address + NewEjector common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEjectorUpdated is a free log retrieval operation binding the contract event 0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9. +// +// Solidity: event EjectorUpdated(address prevEjector, address newEjector) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterEjectorUpdated(opts *bind.FilterOpts) (*ContractRegistryCoordinatorEjectorUpdatedIterator, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "EjectorUpdated") + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorEjectorUpdatedIterator{contract: _ContractRegistryCoordinator.contract, event: "EjectorUpdated", logs: logs, sub: sub}, nil +} + +// WatchEjectorUpdated is a free log subscription operation binding the contract event 0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9. +// +// Solidity: event EjectorUpdated(address prevEjector, address newEjector) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchEjectorUpdated(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorEjectorUpdated) (event.Subscription, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "EjectorUpdated") + 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(ContractRegistryCoordinatorEjectorUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "EjectorUpdated", 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 +} + +// ParseEjectorUpdated is a log parse operation binding the contract event 0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9. +// +// Solidity: event EjectorUpdated(address prevEjector, address newEjector) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseEjectorUpdated(log types.Log) (*ContractRegistryCoordinatorEjectorUpdated, error) { + event := new(ContractRegistryCoordinatorEjectorUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "EjectorUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorInitializedIterator struct { + Event *ContractRegistryCoordinatorInitialized // 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 *ContractRegistryCoordinatorInitializedIterator) 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(ContractRegistryCoordinatorInitialized) + 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(ContractRegistryCoordinatorInitialized) + 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 *ContractRegistryCoordinatorInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorInitialized represents a Initialized event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractRegistryCoordinatorInitializedIterator, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorInitializedIterator{contract: _ContractRegistryCoordinator.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorInitialized) (event.Subscription, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "Initialized") + 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(ContractRegistryCoordinatorInitialized) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseInitialized(log types.Log) (*ContractRegistryCoordinatorInitialized, error) { + event := new(ContractRegistryCoordinatorInitialized) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorDeregisteredIterator struct { + Event *ContractRegistryCoordinatorOperatorDeregistered // 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 *ContractRegistryCoordinatorOperatorDeregisteredIterator) 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(ContractRegistryCoordinatorOperatorDeregistered) + 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(ContractRegistryCoordinatorOperatorDeregistered) + 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 *ContractRegistryCoordinatorOperatorDeregisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorOperatorDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorOperatorDeregistered represents a OperatorDeregistered event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorDeregistered struct { + Operator common.Address + OperatorId [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4. +// +// Solidity: event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address, operatorId [][32]byte) (*ContractRegistryCoordinatorOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule, operatorIdRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorOperatorDeregisteredIterator{contract: _ContractRegistryCoordinator.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4. +// +// Solidity: event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorOperatorDeregistered, operator []common.Address, operatorId [][32]byte) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule, operatorIdRule) + 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(ContractRegistryCoordinatorOperatorDeregistered) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorDeregistered", 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 +} + +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4. +// +// Solidity: event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseOperatorDeregistered(log types.Log) (*ContractRegistryCoordinatorOperatorDeregistered, error) { + event := new(ContractRegistryCoordinatorOperatorDeregistered) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorRegisteredIterator struct { + Event *ContractRegistryCoordinatorOperatorRegistered // 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 *ContractRegistryCoordinatorOperatorRegisteredIterator) 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(ContractRegistryCoordinatorOperatorRegistered) + 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(ContractRegistryCoordinatorOperatorRegistered) + 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 *ContractRegistryCoordinatorOperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorOperatorRegistered represents a OperatorRegistered event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorRegistered struct { + Operator common.Address + OperatorId [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0xe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe. +// +// Solidity: event OperatorRegistered(address indexed operator, bytes32 indexed operatorId) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address, operatorId [][32]byte) (*ContractRegistryCoordinatorOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "OperatorRegistered", operatorRule, operatorIdRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorOperatorRegisteredIterator{contract: _ContractRegistryCoordinator.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0xe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe. +// +// Solidity: event OperatorRegistered(address indexed operator, bytes32 indexed operatorId) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorOperatorRegistered, operator []common.Address, operatorId [][32]byte) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "OperatorRegistered", operatorRule, operatorIdRule) + 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(ContractRegistryCoordinatorOperatorRegistered) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorRegistered", 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 +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0xe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe. +// +// Solidity: event OperatorRegistered(address indexed operator, bytes32 indexed operatorId) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseOperatorRegistered(log types.Log) (*ContractRegistryCoordinatorOperatorRegistered, error) { + event := new(ContractRegistryCoordinatorOperatorRegistered) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator is returned from FilterOperatorSetParamsUpdated and is used to iterate over the raw logs and unpacked data for OperatorSetParamsUpdated events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator struct { + Event *ContractRegistryCoordinatorOperatorSetParamsUpdated // 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 *ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator) 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(ContractRegistryCoordinatorOperatorSetParamsUpdated) + 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(ContractRegistryCoordinatorOperatorSetParamsUpdated) + 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 *ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorOperatorSetParamsUpdated represents a OperatorSetParamsUpdated event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorSetParamsUpdated struct { + QuorumNumber uint8 + OperatorSetParams IRegistryCoordinatorOperatorSetParam + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetParamsUpdated is a free log retrieval operation binding the contract event 0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac. +// +// Solidity: event OperatorSetParamsUpdated(uint8 indexed quorumNumber, (uint32,uint16,uint16) operatorSetParams) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterOperatorSetParamsUpdated(opts *bind.FilterOpts, quorumNumber []uint8) (*ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator, error) { + + var quorumNumberRule []interface{} + for _, quorumNumberItem := range quorumNumber { + quorumNumberRule = append(quorumNumberRule, quorumNumberItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "OperatorSetParamsUpdated", quorumNumberRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorOperatorSetParamsUpdatedIterator{contract: _ContractRegistryCoordinator.contract, event: "OperatorSetParamsUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetParamsUpdated is a free log subscription operation binding the contract event 0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac. +// +// Solidity: event OperatorSetParamsUpdated(uint8 indexed quorumNumber, (uint32,uint16,uint16) operatorSetParams) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchOperatorSetParamsUpdated(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorOperatorSetParamsUpdated, quorumNumber []uint8) (event.Subscription, error) { + + var quorumNumberRule []interface{} + for _, quorumNumberItem := range quorumNumber { + quorumNumberRule = append(quorumNumberRule, quorumNumberItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "OperatorSetParamsUpdated", quorumNumberRule) + 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(ContractRegistryCoordinatorOperatorSetParamsUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorSetParamsUpdated", 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 +} + +// ParseOperatorSetParamsUpdated is a log parse operation binding the contract event 0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac. +// +// Solidity: event OperatorSetParamsUpdated(uint8 indexed quorumNumber, (uint32,uint16,uint16) operatorSetParams) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseOperatorSetParamsUpdated(log types.Log) (*ContractRegistryCoordinatorOperatorSetParamsUpdated, error) { + event := new(ContractRegistryCoordinatorOperatorSetParamsUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorSetParamsUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorOperatorSocketUpdateIterator is returned from FilterOperatorSocketUpdate and is used to iterate over the raw logs and unpacked data for OperatorSocketUpdate events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorSocketUpdateIterator struct { + Event *ContractRegistryCoordinatorOperatorSocketUpdate // 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 *ContractRegistryCoordinatorOperatorSocketUpdateIterator) 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(ContractRegistryCoordinatorOperatorSocketUpdate) + 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(ContractRegistryCoordinatorOperatorSocketUpdate) + 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 *ContractRegistryCoordinatorOperatorSocketUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorOperatorSocketUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorOperatorSocketUpdate represents a OperatorSocketUpdate event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOperatorSocketUpdate struct { + OperatorId [32]byte + Socket string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSocketUpdate is a free log retrieval operation binding the contract event 0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa. +// +// Solidity: event OperatorSocketUpdate(bytes32 indexed operatorId, string socket) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterOperatorSocketUpdate(opts *bind.FilterOpts, operatorId [][32]byte) (*ContractRegistryCoordinatorOperatorSocketUpdateIterator, error) { + + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "OperatorSocketUpdate", operatorIdRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorOperatorSocketUpdateIterator{contract: _ContractRegistryCoordinator.contract, event: "OperatorSocketUpdate", logs: logs, sub: sub}, nil +} + +// WatchOperatorSocketUpdate is a free log subscription operation binding the contract event 0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa. +// +// Solidity: event OperatorSocketUpdate(bytes32 indexed operatorId, string socket) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchOperatorSocketUpdate(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorOperatorSocketUpdate, operatorId [][32]byte) (event.Subscription, error) { + + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "OperatorSocketUpdate", operatorIdRule) + 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(ContractRegistryCoordinatorOperatorSocketUpdate) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorSocketUpdate", 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 +} + +// ParseOperatorSocketUpdate is a log parse operation binding the contract event 0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa. +// +// Solidity: event OperatorSocketUpdate(bytes32 indexed operatorId, string socket) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseOperatorSocketUpdate(log types.Log) (*ContractRegistryCoordinatorOperatorSocketUpdate, error) { + event := new(ContractRegistryCoordinatorOperatorSocketUpdate) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OperatorSocketUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOwnershipTransferredIterator struct { + Event *ContractRegistryCoordinatorOwnershipTransferred // 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 *ContractRegistryCoordinatorOwnershipTransferredIterator) 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(ContractRegistryCoordinatorOwnershipTransferred) + 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(ContractRegistryCoordinatorOwnershipTransferred) + 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 *ContractRegistryCoordinatorOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorOwnershipTransferred represents a OwnershipTransferred event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ContractRegistryCoordinatorOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorOwnershipTransferredIterator{contract: _ContractRegistryCoordinator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + 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(ContractRegistryCoordinatorOwnershipTransferred) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OwnershipTransferred", 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 +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseOwnershipTransferred(log types.Log) (*ContractRegistryCoordinatorOwnershipTransferred, error) { + event := new(ContractRegistryCoordinatorOwnershipTransferred) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorPausedIterator struct { + Event *ContractRegistryCoordinatorPaused // 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 *ContractRegistryCoordinatorPausedIterator) 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(ContractRegistryCoordinatorPaused) + 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(ContractRegistryCoordinatorPaused) + 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 *ContractRegistryCoordinatorPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorPaused represents a Paused event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorPaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*ContractRegistryCoordinatorPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorPausedIterator{contract: _ContractRegistryCoordinator.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "Paused", accountRule) + 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(ContractRegistryCoordinatorPaused) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "Paused", 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 +} + +// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParsePaused(log types.Log) (*ContractRegistryCoordinatorPaused, error) { + event := new(ContractRegistryCoordinatorPaused) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorPauserRegistrySetIterator struct { + Event *ContractRegistryCoordinatorPauserRegistrySet // 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 *ContractRegistryCoordinatorPauserRegistrySetIterator) 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(ContractRegistryCoordinatorPauserRegistrySet) + 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(ContractRegistryCoordinatorPauserRegistrySet) + 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 *ContractRegistryCoordinatorPauserRegistrySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorPauserRegistrySetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorPauserRegistrySet represents a PauserRegistrySet event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorPauserRegistrySet struct { + PauserRegistry common.Address + NewPauserRegistry common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*ContractRegistryCoordinatorPauserRegistrySetIterator, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "PauserRegistrySet") + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorPauserRegistrySetIterator{contract: _ContractRegistryCoordinator.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil +} + +// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorPauserRegistrySet) (event.Subscription, error) { + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "PauserRegistrySet") + 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(ContractRegistryCoordinatorPauserRegistrySet) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "PauserRegistrySet", 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 +} + +// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParsePauserRegistrySet(log types.Log) (*ContractRegistryCoordinatorPauserRegistrySet, error) { + event := new(ContractRegistryCoordinatorPauserRegistrySet) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator is returned from FilterQuorumBlockNumberUpdated and is used to iterate over the raw logs and unpacked data for QuorumBlockNumberUpdated events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator struct { + Event *ContractRegistryCoordinatorQuorumBlockNumberUpdated // 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 *ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator) 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(ContractRegistryCoordinatorQuorumBlockNumberUpdated) + 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(ContractRegistryCoordinatorQuorumBlockNumberUpdated) + 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 *ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorQuorumBlockNumberUpdated represents a QuorumBlockNumberUpdated event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorQuorumBlockNumberUpdated struct { + QuorumNumber uint8 + Blocknumber *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterQuorumBlockNumberUpdated is a free log retrieval operation binding the contract event 0x46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4. +// +// Solidity: event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterQuorumBlockNumberUpdated(opts *bind.FilterOpts, quorumNumber []uint8) (*ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator, error) { + + var quorumNumberRule []interface{} + for _, quorumNumberItem := range quorumNumber { + quorumNumberRule = append(quorumNumberRule, quorumNumberItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "QuorumBlockNumberUpdated", quorumNumberRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorQuorumBlockNumberUpdatedIterator{contract: _ContractRegistryCoordinator.contract, event: "QuorumBlockNumberUpdated", logs: logs, sub: sub}, nil +} + +// WatchQuorumBlockNumberUpdated is a free log subscription operation binding the contract event 0x46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4. +// +// Solidity: event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchQuorumBlockNumberUpdated(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorQuorumBlockNumberUpdated, quorumNumber []uint8) (event.Subscription, error) { + + var quorumNumberRule []interface{} + for _, quorumNumberItem := range quorumNumber { + quorumNumberRule = append(quorumNumberRule, quorumNumberItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "QuorumBlockNumberUpdated", quorumNumberRule) + 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(ContractRegistryCoordinatorQuorumBlockNumberUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "QuorumBlockNumberUpdated", 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 +} + +// ParseQuorumBlockNumberUpdated is a log parse operation binding the contract event 0x46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4. +// +// Solidity: event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseQuorumBlockNumberUpdated(log types.Log) (*ContractRegistryCoordinatorQuorumBlockNumberUpdated, error) { + event := new(ContractRegistryCoordinatorQuorumBlockNumberUpdated) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "QuorumBlockNumberUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractRegistryCoordinatorUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorUnpausedIterator struct { + Event *ContractRegistryCoordinatorUnpaused // 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 *ContractRegistryCoordinatorUnpausedIterator) 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(ContractRegistryCoordinatorUnpaused) + 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(ContractRegistryCoordinatorUnpaused) + 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 *ContractRegistryCoordinatorUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractRegistryCoordinatorUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractRegistryCoordinatorUnpaused represents a Unpaused event raised by the ContractRegistryCoordinator contract. +type ContractRegistryCoordinatorUnpaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*ContractRegistryCoordinatorUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &ContractRegistryCoordinatorUnpausedIterator{contract: _ContractRegistryCoordinator.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ContractRegistryCoordinatorUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractRegistryCoordinator.contract.WatchLogs(opts, "Unpaused", accountRule) + 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(ContractRegistryCoordinatorUnpaused) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "Unpaused", 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 +} + +// ParseUnpaused is a log parse operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractRegistryCoordinator *ContractRegistryCoordinatorFilterer) ParseUnpaused(log types.Log) (*ContractRegistryCoordinatorUnpaused, error) { + event := new(ContractRegistryCoordinatorUnpaused) + if err := _ContractRegistryCoordinator.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/StakeRegistry/binding.go b/contracts/bindings/StakeRegistry/binding.go index d65dfc6fd..b079480ce 100644 --- a/contracts/bindings/StakeRegistry/binding.go +++ b/contracts/bindings/StakeRegistry/binding.go @@ -29,23 +29,23 @@ var ( _ = abi.ConvertType ) -// IStakeRegistryOperatorStakeUpdate is an auto generated low-level Go binding around an user-defined struct. -type IStakeRegistryOperatorStakeUpdate struct { +// IStakeRegistryStakeUpdate is an auto generated low-level Go binding around an user-defined struct. +type IStakeRegistryStakeUpdate struct { UpdateBlockNumber uint32 NextUpdateBlockNumber uint32 Stake *big.Int } -// IVoteWeigherStrategyAndWeightingMultiplier is an auto generated low-level Go binding around an user-defined struct. -type IVoteWeigherStrategyAndWeightingMultiplier struct { +// IStakeRegistryStrategyParams is an auto generated low-level Go binding around an user-defined struct. +type IStakeRegistryStrategyParams struct { Strategy common.Address Multiplier *big.Int } // ContractStakeRegistryMetaData contains all meta data concerning the ContractStakeRegistry contract. var ContractStakeRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_serviceManager\",\"type\":\"address\",\"internalType\":\"contractIServiceManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_QUORUM_COUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_WEIGHING_FUNCTION_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WEIGHTING_DIVISOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesConsideredAndMultipliers\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_newStrategiesConsideredAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIVoteWeigher.StrategyAndWeightingMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createQuorum\",\"inputs\":[{\"name\":\"_strategiesConsideredAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIVoteWeigher.StrategyAndWeightingMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentOperatorStakeForQuorum\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentTotalStakeForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLengthOfOperatorIdStakeHistoryForQuorum\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLengthOfTotalStakeHistoryForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMostRecentStakeUpdateByOperatorId\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.OperatorStakeUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorIdToStakeHistory\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIStakeRegistry.OperatorStakeUpdate[]\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeForOperatorIdForQuorumAtBlockNumber\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeForQuorumAtBlockNumberFromOperatorIdAndIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeUpdateForQuorumFromOperatorIdAndIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.OperatorStakeUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeAtBlockNumberFromIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeIndicesByQuorumNumbersAtBlockNumber\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeUpdateForQuorumFromIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.OperatorStakeUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_minimumStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"_quorumStrategiesConsideredAndMultipliers\",\"type\":\"tuple[][]\",\"internalType\":\"structIVoteWeigher.StrategyAndWeightingMultiplier[][]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minimumStakeForQuorum\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyStrategyWeights\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"strategyIndices\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"newMultipliers\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"quorumCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesConsideredAndMultipliers\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"indicesToRemove\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serviceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setMinimumStakeForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategiesConsideredAndMultipliers\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategiesConsideredAndMultipliersLength\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyAndWeightingMultiplierForQuorumByIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIVoteWeigher.StrategyAndWeightingMultiplier\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateStakes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"weightOfOperatorForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinimumStakeForQuorumUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumCreated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakeUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"stake\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyMultiplierUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false}]", - Bin: "0x6101206040523480156200001257600080fd5b50604051620040a0380380620040a083398101604081905262000035916200024a565b8282828181816001600160a01b031660a0816001600160a01b031681525050816001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000093573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b991906200029e565b6001600160a01b03166080816001600160a01b031681525050816001600160a01b031663b13442716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013791906200029e565b6001600160a01b0390811660c052811660e052620001546200016f565b505050506001600160a01b03166101005250620002c5915050565b600054610100900460ff1615620001dc5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200022f576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200024757600080fd5b50565b6000806000606084860312156200026057600080fd5b83516200026d8162000231565b6020850151909350620002808162000231565b6040850151909250620002938162000231565b809150509250925092565b600060208284031215620002b157600080fd5b8151620002be8162000231565b9392505050565b60805160a05160c05160e05161010051613d506200035060003960008181610395015281816108de015281816117fd01528181611bb40152611c940152600081816102c401528181610b9a01528181610f2c015281816114f4015281816116480152611734015260006104f20152600061030301526000818161059e01526107790152613d506000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806399eed4ee11610125578063c8294c56116100ad578063df5cf7231161007c578063df5cf72314610599578063e192e9ad146105c0578063e25427dd146105e0578063e89c0a00146105f3578063eb92199c1461060657600080fd5b8063c8294c561461054d578063c8f739d014610560578063cd050d9c14610573578063ce977ec31461058657600080fd5b8063a6734667116100f4578063a6734667146104e5578063b1344271146104ed578063bba549fa14610514578063bc9a40c314610527578063bd29b8cd1461053a57600080fd5b806399eed4ee146104755780639aa1653d146104885780639e8ca620146104af578063a43cde89146104d257600080fd5b80635e5a6775116101a85780636e8f03ca116101775780636e8f03ca146103b75780637c172347146103e85780637cc0d75f146104025780637ed9430f14610442578063944472a91461045557600080fd5b80635e5a67751461034d5780635f2948ec1461036a5780636ab538d41461037d5780636d14a9871461039057600080fd5b80632b3d8816116101ef5780632b3d8816146102995780632c2a5d2b146102ac5780633998fdd3146102bf57806339b70e38146102fe578063480858661461032557600080fd5b80631b327225146102215780631f9b74e014610251578063248d6573146102645780632550477714610284575b600080fd5b61023461022f366004613133565b610627565b6040516001600160601b0390911681526020015b60405180910390f35b61023461025f366004613184565b61068b565b6102776102723660046131bb565b61083a565b60405161024891906131ee565b61029761029236600461326b565b6108d3565b005b6102976102a736600461330a565b610b98565b6102976102ba36600461335c565b610f2a565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610248565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b610338610333366004613133565b611260565b60405163ffffffff9091168152602001610248565b61035c670de0b6b3a764000081565b604051908152602001610248565b6102976103783660046135a2565b611275565b61023461038b366004613661565b61138a565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b61035c6103c5366004613661565b60009182526101b36020908152604080842060ff93909316845291905290205490565b6103f0602081565b60405160ff9091168152602001610248565b61041561041036600461368d565b6113a5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610248565b6102346104503660046136b7565b61141f565b610468610463366004613661565b611453565b60405161024891906136d0565b610297610483366004613748565b6114f2565b60005461049c9062010000900461ffff1681565b60405161ffff9091168152602001610248565b61035c6104bd36600461377c565b60ff1660009081526001602052604090205490565b6102346104e0366004613797565b6115b0565b6103f060c081565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b6102976105223660046137d9565b611646565b61029761053536600461381c565b611732565b610297610548366004613846565b6117f2565b61023461055b366004613884565b611989565b61023461056e36600461377c565b611a18565b610277610581366004613661565b611a89565b6102976105943660046138c0565b611b70565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b6105d36105ce366004613901565b611e50565b604051610248919061393a565b6102776105ee36600461368d565b6120bd565b61035c61060136600461377c565b612155565b61061961061436600461368d565b612176565b604051610248929190613978565b60008381526101b36020908152604080832060ff86168452909152812061064f8585856121bf565b63ffffffff16815481106106655761066561399a565b600091825260209091200154600160401b90046001600160601b031690505b9392505050565b60008054839062010000900461ffff1660ff8216106106c55760405162461bcd60e51b81526004016106bc906139b0565b60405180910390fd5b60ff84166000908152600160209081526040808320548151808301909252838252918101839052825b8281101561082e5760ff8816600090815260016020526040902080548290811061071a5761071a61399a565b6000918252602080832060408051808201825293909101546001600160a01b03808216808652600160a01b9092046001600160601b031693850193909352905163778e55f360e01b81528b8316600482015260248101919091529194507f0000000000000000000000000000000000000000000000000000000000000000169063778e55f390604401602060405180830381865afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190613a0d565b9050801561082557670de0b6b3a764000083602001516001600160601b03168261080e9190613a3c565b6108189190613a5b565b6108229086613a7d565b94505b506001016106ee565b50919695505050505050565b60408051606081018252600080825260208083018290528284018290528582526101b3815283822060ff881683529052919091208054839081106108805761088061399a565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461091b5760405162461bcd60e51b81526004016106bc90613aa8565b60005462010000900461ffff168282610935600182613b1a565b8181106109445761094461399a565b9050013560f81c60f81b60f81c60ff16106109e45760405162461bcd60e51b815260206004820152605460248201527f5374616b6552656769737472792e5f72656769737465724f70657261746f723a60448201527f2067726561746573742071756f72756d4e756d626572206d757374206265206c606482015273195cdcc81d1a185b881c5d5bdc9d5b50dbdd5b9d60621b608482015260a4016106bc565b604080516060810182526000602082018190529181018290524363ffffffff168152905b60ff8116831115610b9057600084848360ff16818110610a2a57610a2a61399a565b919091013560f81c915060009050610a438888846124e6565b9150506001600160601b038116610ae85760405162461bcd60e51b815260206004820152605c60248201527f5374616b6552656769737472792e5f72656769737465724f70657261746f723a60448201527f204f70657261746f7220646f6573206e6f74206d656574206d696e696d756d2060648201527f7374616b6520726571756972656d656e7420666f722071756f72756d00000000608482015260a4016106bc565b600060b38360ff166101008110610b0157610b0161399a565b01549050818115610b685760b38460ff166101008110610b2357610b2361399a565b01610b2f600184613b1a565b81548110610b3f57610b3f61399a565b600091825260209091200154610b6590600160401b90046001600160601b031682613a7d565b90505b6001600160601b0381166040870152610b8184876125eb565b84600101945050505050610a08565b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613b31565b6001600160a01b0316336001600160a01b031614610c4a5760405162461bcd60e51b81526004016106bc90613b4e565b600054839062010000900461ffff1660ff821610610c7a5760405162461bcd60e51b81526004016106bc906139b0565b8180610d145760405162461bcd60e51b815260206004820152605760248201527f566f746557656967686572426173652e72656d6f76655374726174656769657360448201527f436f6e73696465726564416e644d756c7469706c696572733a206e6f20696e6460648201527f6963657320746f2072656d6f76652070726f7669646564000000000000000000608482015260a4016106bc565b60005b81811015610b905760ff861660008181526001602052604090207f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f790878785818110610d6557610d6561399a565b9050602002013581548110610d7c57610d7c61399a565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a260ff861660008181526001602052604090207f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7590878785818110610de857610de861399a565b9050602002013581548110610dff57610dff61399a565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a260ff8616600090815260016020819052604090912080549091610e5191613b1a565b81548110610e6157610e6161399a565b6000918252602080832060ff8a16845260019091526040909220910190868684818110610e9057610e9061399a565b9050602002013581548110610ea757610ea761399a565b600091825260208083208454920180546001600160a01b0319166001600160a01b03909316928317815593546001600160601b03600160a01b91829004160290911790925560ff88168152600190915260409020805480610f0a57610f0a613bca565b600082815260208120820160001990810191909155019055600101610d17565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190613b31565b6001600160a01b0316336001600160a01b031614610fdc5760405162461bcd60e51b81526004016106bc90613b4e565b600054859062010000900461ffff1660ff82161061100c5760405162461bcd60e51b81526004016106bc906139b0565b838061108c5760405162461bcd60e51b815260206004820152604360248201527f566f746557656967686572426173652e6d6f646966795374726174656779576560448201527f69676874733a206e6f20737472617465677920696e64696365732070726f766960648201526219195960ea1b608482015260a4016106bc565b8281146111015760405162461bcd60e51b815260206004820152603c60248201527f566f746557656967686572426173652e6d6f646966795374726174656779576560448201527f69676874733a20696e707574206c656e677468206d69736d617463680000000060648201526084016106bc565b60005b818110156112565784848281811061111e5761111e61399a565b90506020020160208101906111339190613be0565b60ff891660009081526001602052604090208888848181106111575761115761399a565b905060200201358154811061116e5761116e61399a565b6000918252602080832090910180546001600160601b0394909416600160a01b026001600160a01b039094169390931790925560ff8a168082526001909252604090207f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75908989858181106111e5576111e561399a565b90506020020135815481106111fc576111fc61399a565b6000918252602090912001546001600160a01b03168787858181106112235761122361399a565b90506020020160208101906112389190613be0565b604051611246929190613978565b60405180910390a2600101611104565b5050505050505050565b600061126d8484846121bf565b949350505050565b600054610100900460ff16158080156112955750600054600160ff909116105b806112af5750303b1580156112af575060005460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106bc565b6000805460ff191660011790558015611335576000805461ff0019166101001790555b61133f8383612705565b8015611385576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000806113978484611a89565b604001519150505b92915050565b604080518082019091526000808252602082015260ff831660009081526001602052604090208054839081106113dd576113dd61399a565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b603381610100811061143057600080fd5b60029182820401919006600c02915054906101000a90046001600160601b031681565b60008281526101b36020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b828210156114e6576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b03169082015282526001909201910161148d565b50505050905092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190613b31565b6001600160a01b0316336001600160a01b0316146115a45760405162461bcd60e51b81526004016106bc90613b4e565b6115ad81612849565b50565b60008281526101b36020908152604080832060ff8816845290915281208054829190849081106115e2576115e261399a565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b909304929092169082015290506116398186612949565b6040015195945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190613b31565b6001600160a01b0316336001600160a01b0316146116f85760405162461bcd60e51b81526004016106bc90613b4e565b600054829062010000900461ffff1660ff8216106117285760405162461bcd60e51b81526004016106bc906139b0565b6113858383612aca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b49190613b31565b6001600160a01b0316336001600160a01b0316146117e45760405162461bcd60e51b81526004016106bc90613b4e565b6117ee8282612efc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461183a5760405162461bcd60e51b81526004016106bc90613aa8565b60408051606080820183526000602080840182905283850182905263ffffffff43168085528551938401865290830182905293820181905292815290915b60ff8116841115610b9057600085858360ff1681811061189a5761189a61399a565b919091013560f81c9150600090506118b3888387612f91565b90508060b38360ff1661010081106118cd576118cd61399a565b01600160b38560ff1661010081106118e7576118e761399a565b01546118f39190613b1a565b815481106119035761190361399a565b6000918252602090912001546119299190600160401b90046001600160601b0316613bfb565b6001600160601b0316604085015261194182856125eb565b6040805160ff841681526000602082015289917fe7c60c52692f0e0ff8d1c289ffe63cb02e79373f35e3000cafe7cca898885934910160405180910390a25050600101611878565b60008060b38560ff1661010081106119a3576119a361399a565b0183815481106119b5576119b561399a565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611a0c8185612949565b60400151949350505050565b600060b38260ff166101008110611a3157611a3161399a565b01600160b38460ff166101008110611a4b57611a4b61399a565b0154611a579190613b1a565b81548110611a6757611a6761399a565b600091825260209091200154600160401b90046001600160601b031692915050565b6040805160608082018352600080835260208084018290528385018290528682526101b3815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611ae357915061139f9050565b60008581526101b36020908152604080832060ff881684529091529020611b0b600184613b1a565b81548110611b1b57611b1b61399a565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152925061139f915050565b60005b60005462010000900461ffff1660ff821610156113855760408051606081018252600080825260208201819052918101829052905b83811015611e2f5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166313542a4e878785818110611bf357611bf361399a565b9050602002016020810190611c089190613c23565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c709190613a0d565b604051633431af2560e01b8152600481018290529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633431af2590602401602060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cff9190613c40565b905060016001600160c01b03821660ff87161c81161415611e2557835163ffffffff16611dc15760b38560ff166101008110611d3d57611d3d61399a565b01600160b38760ff166101008110611d5757611d5761399a565b0154611d639190613b1a565b81548110611d7357611d7361399a565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b909304929092169082015293505b600080611df5898987818110611dd957611dd961399a565b9050602002016020810190611dee9190613c23565b85896124e6565b9150915080828760400151611e0a9190613bfb565b611e149190613a7d565b6001600160601b0316604087015250505b5050600101611ba8565b50805163ffffffff1615611e4757611e4782826125eb565b50600101611b73565b60606000826001600160401b03811115611e6c57611e6c6133dc565b604051908082528060200260200182016040528015611e95578160200160208202803683370190505b50905060005b838110156120b4576000858583818110611eb757611eb761399a565b919091013560f81c91505063ffffffff871660b3826101008110611edd57611edd61399a565b01600081548110611ef057611ef061399a565b60009182526020909120015463ffffffff161115611faf5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f6573427951756f72756d4e756d626572734174426c6f636b4e756d6265723a2060648201527f71756f72756d20686173206e6f207374616b6520686973746f727920617420626084820152693637b1b5a73ab6b132b960b11b60a482015260c4016106bc565b600060b38260ff166101008110611fc857611fc861399a565b0154905060005b8163ffffffff168163ffffffff16101561209e578863ffffffff1660b38460ff1661010081106120015761200161399a565b01600161200e8486613c69565b6120189190613c69565b63ffffffff168154811061202e5761202e61399a565b60009182526020909120015463ffffffff161161208c5760016120518284613c69565b61205b9190613c69565b85858151811061206d5761206d61399a565b602002602001019063ffffffff16908163ffffffff168152505061209e565b8061209681613c86565b915050611fcf565b50505080806120ac90613caa565b915050611e9b565b50949350505050565b604080516060810182526000808252602082018190529181019190915260b38360ff1661010081106120f1576120f161399a565b0182815481106121035761210361399a565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b600060b38260ff16610100811061216e5761216e61399a565b015492915050565b6001602052816000526040600020818154811061219257600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60008381526101b36020908152604080832060ff86168452909152812054815b8163ffffffff168163ffffffff1610156124165760008681526101b36020908152604080832060ff89168452909152902063ffffffff85169060016122248486613c69565b61222e9190613c69565b63ffffffff16815481106122445761224461399a565b60009182526020909120015463ffffffff16116124045760008681526101b36020908152604080832060ff89168452909152902060016122848385613c69565b61228e9190613c69565b63ffffffff16815481106122a4576122a461399a565b600091825260209091200154600160201b900463ffffffff161580612330575060008681526101b36020908152604080832060ff89168452909152902063ffffffff85169060016122f58486613c69565b6122ff9190613c69565b63ffffffff16815481106123155761231561399a565b600091825260209091200154600160201b900463ffffffff16115b6123e55760405162461bcd60e51b815260206004820152607460248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724964466f7251756f72756d4174426c6f636b4e60648201527f756d6265723a206f70657261746f72496420686173206e6f207374616b652075608482015273383230ba329030ba10313637b1b5a73ab6b132b960611b60a482015260c4016106bc565b60016123f18284613c69565b6123fb9190613c69565b92505050610684565b8061240e81613c86565b9150506121df565b5060405162461bcd60e51b815260206004820152608c60248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724964466f7251756f72756d4174426c6f636b4e60648201527f756d6265723a206e6f207374616b652075706461746520666f756e6420666f7260848201527f206f70657261746f72496420616e642071756f72756d4e756d6265722061742060a48201526b313637b1b590373ab6b132b960a11b60c482015260e4016106bc565b604080516060810182526000602082018190529181018290524363ffffffff1681528190612514848761068b565b6001600160601b03166040820152603360ff851661010081106125395761253961399a565b60029182820401919006600c029054906101000a90046001600160601b03166001600160601b031681604001516001600160601b0316101561257d57600060408201525b600061258a868684612f91565b604080840151815160ff891681526001600160601b03909116602082015291925087917fe7c60c52692f0e0ff8d1c289ffe63cb02e79373f35e3000cafe7cca898885934910160405180910390a26040909101519092509050935093915050565b600060b38360ff1661010081106126045761260461399a565b01549050801561266e574360b38460ff1661010081106126265761262661399a565b01612632600184613b1a565b815481106126425761264261399a565b9060005260206000200160000160046101000a81548163ffffffff021916908363ffffffff1602179055505b63ffffffff4316825260b360ff8416610100811061268e5761268e61399a565b0180546001810182556000918252602091829020845191018054928501516040909501516001600160601b0316600160401b026bffffffffffffffffffffffff60401b1963ffffffff968716600160201b0267ffffffffffffffff1990951696909316959095179290921716929092179091555050565b600054610100900460ff166127705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106bc565b80518251146127e75760405162461bcd60e51b815260206004820152603b60248201527f52656769737472792e5f696e697469616c697a653a206d696e696d756d53746160448201527f6b65466f7251756f72756d206c656e677468206d69736d61746368000000000060648201526084016106bc565b60005b81518160ff1610156113855761281c81848360ff168151811061280f5761280f61399a565b6020026020010151612efc565b612841828260ff16815181106128345761283461399a565b6020026020010151612849565b6001016127ea565b60005462010000900461ffff1660c081106128e45760405162461bcd60e51b815260206004820152604f60248201527f566f746557656967686572426173652e5f63726561746551756f72756d3a206e60448201527f756d626572206f662071756f72756d732063616e6e6f7420657863656564204d60648201526e105617d45553d4955357d0d3d55395608a1b608482015260a4016106bc565b806128f0816001613cc5565b600060026101000a81548161ffff021916908361ffff1602179055506129168184612aca565b60405160ff8216907f831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b490600090a2505050565b815163ffffffff808316911611156129ef5760405162461bcd60e51b815260206004820152606060248201527f5374616b6552656769737472792e5f76616c69646174654f70657261746f725360448201527f74616b654174426c6f636b4e756d6265723a206f70657261746f725374616b6560648201527f5570646174652069732066726f6d20616674657220626c6f636b4e756d626572608482015260a4016106bc565b602082015163ffffffff161580612a1557508063ffffffff16826020015163ffffffff16115b6117ee5760405162461bcd60e51b815260206004820152607460248201527f5374616b6552656769737472792e5f76616c69646174654f70657261746f725360448201527f74616b654174426c6f636b4e756d6265723a2074686572652069732061206e6560648201527f776572206f70657261746f725374616b6555706461746520617661696c61626c60848201527332903132b337b93290313637b1b5a73ab6b132b960611b60a482015260c4016106bc565b6000815111612b465760405162461bcd60e51b815260206004820152604e6024820152600080516020613cfb83398151915260448201527f6e73696465726564416e644d756c7469706c696572733a206e6f20737472617460648201526d1959da595cc81c1c9bdd9a59195960921b608482015260a4016106bc565b805160ff831660009081526001602090815260409091205490612b698383613ce2565b1115612bf15760405162461bcd60e51b815260206004820152605b6024820152600080516020613cfb83398151915260448201527f6e73696465726564416e644d756c7469706c696572733a20657863656564204d60648201527f41585f5745494748494e475f46554e4354494f4e5f4c454e4754480000000000608482015260a4016106bc565b60005b82811015612ef55760005b612c098284613ce2565b811015612cfc57848281518110612c2257612c2261399a565b6020026020010151600001516001600160a01b0316600160008860ff1660ff1681526020019081526020016000208281548110612c6157612c6161399a565b6000918252602090912001546001600160a01b03161415612cf45760405162461bcd60e51b81526020600482015260536024820152600080516020613cfb83398151915260448201527f6e73696465726564416e644d756c7469706c696572733a2063616e6e6f7420616064820152720c8c840e6c2daca40e6e8e4c2e8cacef24064f606b1b608482015260a4016106bc565b600101612bff565b506000848281518110612d1157612d1161399a565b6020026020010151602001516001600160601b031611612dad5760405162461bcd60e51b815260206004820152605c6024820152600080516020613cfb83398151915260448201527f6e73696465726564416e644d756c7469706c696572733a2063616e6e6f74206160648201527f64642073747261746567792077697468207a65726f2077656967687400000000608482015260a4016106bc565b60ff851660009081526001602052604090208451859083908110612dd357612dd361399a565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612e5057612e5061399a565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612ead57612ead61399a565b602002602001015160000151868481518110612ecb57612ecb61399a565b602002602001015160200151604051612ee5929190613978565b60405180910390a2600101612bf4565b5050505050565b8060338360ff166101008110612f1457612f1461399a565b60029182820401919006600c026101000a8154816001600160601b0302191690836001600160601b031602179055508160ff167f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf82604051612f8591906001600160601b0391909116815260200190565b60405180910390a25050565b60008381526101b36020908152604080832060ff86168452909152812054819080156130745760008681526101b36020908152604080832060ff8916845290915290204390612fe1600184613b1a565b81548110612ff157612ff161399a565b60009182526020808320909101805463ffffffff94909416600160201b0267ffffffff0000000019909416939093179092558781526101b38252604080822060ff8916835290925220613045600183613b1a565b815481106130555761305561399a565b600091825260209091200154600160401b90046001600160601b031691505b5060008581526101b36020908152604080832060ff88168452825280832080546001810182559084529282902086519301805492870151918701516001600160601b0316600160401b026bffffffffffffffffffffffff60401b1963ffffffff938416600160201b0267ffffffffffffffff199095169390951692909217929092179290921691909117905590509392505050565b803560ff8116811461311a57600080fd5b919050565b803563ffffffff8116811461311a57600080fd5b60008060006060848603121561314857600080fd5b8335925061315860208501613109565b91506131666040850161311f565b90509250925092565b6001600160a01b03811681146115ad57600080fd5b6000806040838503121561319757600080fd5b6131a083613109565b915060208301356131b08161316f565b809150509250929050565b6000806000606084860312156131d057600080fd5b6131d984613109565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b0316908201526060810161139f565b60008083601f84011261323557600080fd5b5081356001600160401b0381111561324c57600080fd5b60208301915083602082850101111561326457600080fd5b9250929050565b6000806000806060858703121561328157600080fd5b843561328c8161316f565b93506020850135925060408501356001600160401b038111156132ae57600080fd5b6132ba87828801613223565b95989497509550505050565b60008083601f8401126132d857600080fd5b5081356001600160401b038111156132ef57600080fd5b6020830191508360208260051b850101111561326457600080fd5b60008060006040848603121561331f57600080fd5b61332884613109565b925060208401356001600160401b0381111561334357600080fd5b61334f868287016132c6565b9497909650939450505050565b60008060008060006060868803121561337457600080fd5b61337d86613109565b945060208601356001600160401b038082111561339957600080fd5b6133a589838a016132c6565b909650945060408801359150808211156133be57600080fd5b506133cb888289016132c6565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613414576134146133dc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613442576134426133dc565b604052919050565b60006001600160401b03821115613463576134636133dc565b5060051b60200190565b80356001600160601b038116811461311a57600080fd5b600082601f83011261349557600080fd5b813560206134aa6134a58361344a565b61341a565b82815260069290921b840181019181810190868411156134c957600080fd5b8286015b8481101561351857604081890312156134e65760008081fd5b6134ee6133f2565b81356134f98161316f565b815261350682860161346d565b818601528352918301916040016134cd565b509695505050505050565b600082601f83011261353457600080fd5b813560206135446134a58361344a565b82815260059290921b8401810191818101908684111561356357600080fd5b8286015b848110156135185780356001600160401b038111156135865760008081fd5b6135948986838b0101613484565b845250918301918301613567565b600080604083850312156135b557600080fd5b82356001600160401b03808211156135cc57600080fd5b818501915085601f8301126135e057600080fd5b813560206135f06134a58361344a565b82815260059290921b8401810191818101908984111561360f57600080fd5b948201945b83861015613634576136258661346d565b82529482019490820190613614565b9650508601359250508082111561364a57600080fd5b5061365785828601613523565b9150509250929050565b6000806040838503121561367457600080fd5b8235915061368460208401613109565b90509250929050565b600080604083850312156136a057600080fd5b6136a983613109565b946020939093013593505050565b6000602082840312156136c957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561373c5761372983855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b92840192606092909201916001016136ec565b50909695505050505050565b60006020828403121561375a57600080fd5b81356001600160401b0381111561377057600080fd5b61126d84828501613484565b60006020828403121561378e57600080fd5b61068482613109565b600080600080608085870312156137ad57600080fd5b6137b685613109565b93506137c46020860161311f565b93969395505050506040820135916060013590565b600080604083850312156137ec57600080fd5b6137f583613109565b915060208301356001600160401b0381111561381057600080fd5b61365785828601613484565b6000806040838503121561382f57600080fd5b61383883613109565b91506136846020840161346d565b60008060006040848603121561385b57600080fd5b8335925060208401356001600160401b0381111561387857600080fd5b61334f86828701613223565b60008060006060848603121561389957600080fd5b6138a284613109565b92506138b06020850161311f565b9150604084013590509250925092565b600080602083850312156138d357600080fd5b82356001600160401b038111156138e957600080fd5b6138f5858286016132c6565b90969095509350505050565b60008060006040848603121561391657600080fd5b61391f8461311f565b925060208401356001600160401b0381111561387857600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561373c57835163ffffffff1683529284019291840191600101613956565b6001600160a01b039290921682526001600160601b0316602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6020808252603c908201527f566f746557656967686572426173652e76616c696451756f72756d4e756d626560408201527f723a2071756f72756d4e756d626572206973206e6f742076616c696400000000606082015260800190565b600060208284031215613a1f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613a5657613a56613a26565b500290565b600082613a7857634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b03808316818516808303821115613a9f57613a9f613a26565b01949350505050565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b600082821015613b2c57613b2c613a26565b500390565b600060208284031215613b4357600080fd5b81516106848161316f565b60208082526056908201527f566f746557656967686572426173652e6f6e6c79536572766963654d616e616760408201527f65724f776e65723a2063616c6c6572206973206e6f7420746865206f776e65726060820152751037b3103a34329039b2b93b34b1b2a6b0b730b3b2b960511b608082015260a00190565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613bf257600080fd5b6106848261346d565b60006001600160601b0383811690831681811015613c1b57613c1b613a26565b039392505050565b600060208284031215613c3557600080fd5b81356106848161316f565b600060208284031215613c5257600080fd5b81516001600160c01b038116811461068457600080fd5b600063ffffffff83811690831681811015613c1b57613c1b613a26565b600063ffffffff80831681811415613ca057613ca0613a26565b6001019392505050565b6000600019821415613cbe57613cbe613a26565b5060010190565b600061ffff808316818516808303821115613a9f57613a9f613a26565b60008219821115613cf557613cf5613a26565b50019056fe566f746557656967686572426173652e5f61646453747261746567696573436fa26469706673582212208f116ebb338ee5f7425227cde6a2a0a7da4564e9e852451c370abcbdca5e516c64736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_WEIGHING_FUNCTION_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WEIGHTING_DIVISOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategies\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"_strategyParams\",\"type\":\"tuple[]\",\"internalType\":\"structIStakeRegistry.StrategyParams[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentStake\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentTotalStake\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestStakeUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.StakeUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeAtBlockNumber\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeAtBlockNumberAndIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeHistory\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIStakeRegistry.StakeUpdate[]\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeHistoryLength\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeUpdateAtIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.StakeUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakeUpdateIndexAtBlockNumber\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeAtBlockNumberFromIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeHistoryLength\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeIndicesAtBlockNumber\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalStakeUpdateAtIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.StakeUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"_strategyParams\",\"type\":\"tuple[]\",\"internalType\":\"structIStakeRegistry.StrategyParams[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minimumStakeForQuorum\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyStrategyParams\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"strategyIndices\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"newMultipliers\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategies\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"indicesToRemove\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinimumStakeForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyParams\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyParamsByIndex\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIStakeRegistry.StrategyParams\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyParamsLength\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateOperatorStake\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"weightOfOperatorForQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MinimumStakeForQuorumUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorStakeUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"stake\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumCreated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyMultiplierUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromQuorum\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200382d3803806200382d833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516137246200010960003960008181610361015281816106090152818161093501528181610ca401528181610fe90152818161155901528181611649015281816117640152611b370152600081816104e70152611d8701526137246000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806381c0750211610104578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae14610509578063f851e1981461051c578063fa28c6271461052f578063ff694a771461054257600080fd5b8063c8294c5614610494578063d5eccc05146104a7578063dd9846b9146104ba578063df5cf723146104e257600080fd5b8063b6904b78116100de578063b6904b7814610448578063bc9a40c31461045b578063bd29b8cd1461046e578063c601527d1461048157600080fd5b806381c07502146103c8578063ac6bfb03146103e8578063adc804da1461040857600080fd5b80634bd26e091161017c57806366acfefe1161014b57806366acfefe146103315780636d14a9871461035c5780637c1723471461039b5780637ed9430f146103b557600080fd5b80634bd26e09146102cb5780635401ed27146102fc5780635e5a67751461030f5780635f1f2d771461031e57600080fd5b806320b66298116101b857806320b662981461025157806325504777146102665780632cd95940146102875780633ca5a5f5146102a757600080fd5b80630491b41c146101df57806308732461146102055780631f9b74e014610226575b600080fd5b6101f26101ed366004612bd0565b610555565b6040519081526020015b60405180910390f35b610218610213366004612beb565b610576565b6040516101fc929190612c15565b610239610234366004612c4f565b6105c0565b6040516001600160601b0390911681526020016101fc565b61026461025f366004612cca565b610607565b005b610279610274366004612d8b565b610927565b6040516101fc929190612e2a565b61029a610295366004612e4f565b610be9565b6040516101fc9190612e7b565b6101f26102b5366004612bd0565b60ff166000908152610181602052604090205490565b6101f26102d9366004612e4f565b60009182526101806020908152604080842060ff93909316845291905290205490565b61023961030a366004612e4f565b610c89565b6101f2670de0b6b3a764000081565b61026461032c366004612f84565b610ca2565b61034461033f366004612d8b565b610fdc565b6040516001600160c01b0390911681526020016101fc565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101fc565b6103a3602081565b60405160ff90911681526020016101fc565b6102396103c336600461302c565b61112d565b6103db6103d6366004613059565b611161565b6040516101fc91906130ab565b6103fb6103f63660046130e9565b6113ab565b6040516101fc919061311c565b61041b610416366004612beb565b611444565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016101fc565b6103fb610456366004612beb565b6114bf565b610264610469366004613168565b611557565b61026461047c366004613192565b61163e565b61026461048f36600461325e565b611762565b6102396104a23660046132ab565b611844565b6102396104b5366004612bd0565b6118c7565b6104cd6104c83660046132e7565b611938565b60405163ffffffff90911681526020016101fc565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b610239610517366004613323565b61194d565b6103fb61052a366004612e4f565b6119e3565b61023961053d3660046132e7565b611aca565b610264610550366004613365565b611b2c565b600060808260ff16610100811061056e5761056e6133c2565b015492915050565b610181602052816000526040600020818154811061059357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105cc81611c9e565b6105f15760405162461bcd60e51b81526004016105e8906133d8565b60405180910390fd5b60006105fd8585611cc1565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106899190613429565b6001600160a01b0316336001600160a01b0316146106b95760405162461bcd60e51b81526004016105e890613446565b846106c381611c9e565b6106df5760405162461bcd60e51b81526004016105e8906133d8565b8380610755576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084016105e8565b8281146107ca5760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d617463680000000000000060648201526084016105e8565b60ff8716600090815261018160205260408120905b8281101561091c578585828181106107f9576107f96133c2565b905060200201602081019061080e91906134c2565b82898984818110610821576108216133c2565b9050602002013581548110610838576108386133c2565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108a1576108a16133c2565b90506020020135815481106108b8576108b86133c2565b6000918252602090912001546001600160a01b03168888858181106108df576108df6133c2565b90506020020160208101906108f491906134c2565b604051610902929190612c15565b60405180910390a280610914816134f3565b9150506107df565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109725760405162461bcd60e51b81526004016105e89061350e565b6000836001600160401b0381111561098c5761098c612ef3565b6040519080825280602002602001820160405280156109b5578160200160208202803683370190505b5090506000846001600160401b038111156109d2576109d2612ef3565b6040519080825280602002602001820160405280156109fb578160200160208202803683370190505b50905060005b85811015610bdb576000878783818110610a1d57610a1d6133c2565b919091013560f81c9150610a32905081611c9e565b610a9c5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b60648201526084016105e8565b600080610aa9838d611cc1565b9150915080610b465760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a4016105e8565b6000610b538c8585611ea7565b905082878681518110610b6857610b686133c2565b60200260200101906001600160601b031690816001600160601b031681525050610b92848261212b565b868681518110610ba457610ba46133c2565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610bd3906134f3565b915050610a01565b509097909650945050505050565b60008281526101806020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610c7c576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c23565b5050505090505b92915050565b600080610c9684846119e3565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d249190613429565b6001600160a01b0316336001600160a01b031614610d545760405162461bcd60e51b81526004016105e890613446565b81610d5e81611c9e565b610d7a5760405162461bcd60e51b81526004016105e8906133d8565b815180610def5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f766964656400000060648201526084016105e8565b60ff8416600090815261018160205260408120905b82811015610fd4578560ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f783878481518110610e4457610e446133c2565b602002602001015181548110610e5c57610e5c6133c2565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28560ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7583878481518110610eba57610eba6133c2565b602002602001015181548110610ed257610ed26133c2565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a281548290610f1290600190613580565b81548110610f2257610f226133c2565b9060005260206000200182868381518110610f3f57610f3f6133c2565b602002602001015181548110610f5757610f576133c2565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558154829080610faa57610faa613597565b60008281526020812082016000199081019190915501905580610fcc816134f3565b915050610e04565b505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110265760405162461bcd60e51b81526004016105e89061350e565b6000805b838110156105fd576000858583818110611046576110466133c2565b919091013560f81c915061105b905081611c9e565b6110cd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f74206578697374000000000000000060648201526084016105e8565b6000806110da838b611cc1565b91509150806110fc5760009150600160ff84161b6001600160c01b0386161794505b60006111098a8585611ea7565b9050611115848261212b565b50505050508080611125906134f3565b91505061102a565b600081610100811061113e57600080fd5b60029182820401919006600c02915054906101000a90046001600160601b031681565b60606000826001600160401b0381111561117d5761117d612ef3565b6040519080825280602002602001820160405280156111a6578160200160208202803683370190505b50905060005b838110156113a05760008585838181106111c8576111c86133c2565b919091013560f81c91505063ffffffff871660808261010081106111ee576111ee6133c2565b01600081548110611201576112016133c2565b60009182526020909120015463ffffffff1611156112ad5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a4016105e8565b600060808260ff1661010081106112c6576112c66133c2565b0154905060005b8181101561138a578863ffffffff1660808460ff1661010081106112f3576112f36133c2565b0160016113008486613580565b61130a9190613580565b8154811061131a5761131a6133c2565b60009182526020909120015463ffffffff161161137857600161133d8284613580565b6113479190613580565b858581518110611359576113596133c2565b602002602001019063ffffffff16908163ffffffff168152505061138a565b80611382816134f3565b9150506112cd565b5050508080611398906134f3565b9150506111ac565b5090505b9392505050565b6040805160608101825260008082526020808301829052828401829052858252610180815283822060ff881683529052919091208054839081106113f1576113f16133c2565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526101816020526040902080548390811061147d5761147d6133c2565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602082018190529181019190915260808360ff1661010081106114f3576114f36133c2565b018281548110611505576115056133c2565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d99190613429565b6001600160a01b0316336001600160a01b0316146116095760405162461bcd60e51b81526004016105e890613446565b8161161381611c9e565b61162f5760405162461bcd60e51b81526004016105e8906133d8565b61163983836122cc565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116865760405162461bcd60e51b81526004016105e89061350e565b60005b8181101561175c5760008383838181106116a5576116a56133c2565b919091013560f81c91506116ba905081611c9e565b61172c5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016105e8565b600061173a86836000611ea7565b9050611746828261212b565b5050508080611754906134f3565b915050611689565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e49190613429565b6001600160a01b0316336001600160a01b0316146118145760405162461bcd60e51b81526004016105e890613446565b8161181e81611c9e565b61183a5760405162461bcd60e51b81526004016105e8906133d8565b6116398383612361565b60008060808560ff16610100811061185e5761185e6133c2565b018381548110611870576118706133c2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610c968185612748565b600060808260ff1661010081106118e0576118e06133c2565b01600160808460ff1661010081106118fa576118fa6133c2565b01546119069190613580565b81548110611916576119166133c2565b600091825260209091200154600160401b90046001600160601b031692915050565b60006119458484846128d3565b949350505050565b60008281526101806020908152604080832060ff88168452909152812080548291908490811061197f5761197f6133c2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b909304929092169082015290506119d68186612748565b6040015195945050505050565b604080516060808201835260008083526020808401829052838501829052868252610180815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611a3d579150610c839050565b60008581526101806020908152604080832060ff881684529091529020611a65600184613580565b81548110611a7557611a756133c2565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610c83915050565b60008381526101806020908152604080832060ff861684529091528120611af28585856128d3565b63ffffffff1681548110611b0857611b086133c2565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b745760405162461bcd60e51b81526004016105e89061350e565b611b7d83611c9e565b15611be85760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b60648201526084016105e8565b611bf28382612361565b611bfc83836122cc565b60808360ff166101008110611c1357611c136133c2565b6040805160608101825263ffffffff4381168252600060208084018281529484018281529690950180546001810182559082529490209151919093018054925194516001600160601b0316600160401b02600160401b600160a01b0319958516600160201b0267ffffffffffffffff1990941692909416919091179190911792909216179055505050565b600060808260ff166101008110611cb757611cb76133c2565b0154151592915050565b600080600080611ce18660ff166000908152610181602052604090205490565b604080518082019091526000808252602082015290915060005b82811015611e465760ff8816600090815261018160205260409020805482908110611d2857611d286133c2565b6000918252602080832060408051808201825293909101546001600160a01b03808216808652600160a01b9092046001600160601b031693850193909352905163778e55f360e01b81528b8316600482015260248101919091529194507f0000000000000000000000000000000000000000000000000000000000000000169063778e55f390604401602060405180830381865afa158015611dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df291906135ad565b90508015611e3357670de0b6b3a764000083602001516001600160601b031682611e1c91906135c6565b611e2691906135e5565b611e309086613607565b94505b5080611e3e816134f3565b915050611cfb565b506000808860ff166101008110611e5f57611e5f6133c2565b60029182820401919006600c029054906101000a90046001600160601b03166001600160601b0316846001600160601b031610159050838195509550505050505b9250929050565b60008381526101806020908152604080832060ff86168452909152812054819080611f6d5760008681526101806020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff19909616919092161793909317169190911790556120d1565b60008681526101806020908152604080832060ff891684529091528120611f95600184613580565b81548110611fa557611fa56133c2565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611fde57600093505050506113a4565b80544363ffffffff90811691161415612018578054600160401b600160a01b031916600160401b6001600160601b038716021781556120cf565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a81526101806020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26121218285612b74565b9695505050505050565b60008060808460ff166101008110612145576121456133c2565b015490506000608060ff86166101008110612162576121626133c2565b0161216e600184613580565b8154811061217e5761217e6133c2565b90600052602060002001905083600014156121ad5754600160401b90046001600160601b03169150610c839050565b80546000906121cc90600160401b90046001600160601b031686612b8c565b82549091504363ffffffff90811691161415612209578154600160401b600160a01b031916600160401b6001600160601b038316021782556122c3565b815467ffffffff000000001916600160201b4363ffffffff1602178255608060ff8716610100811061223d5761223d6133c2565b6040805160608101825263ffffffff4381168252600060208084018281526001600160601b03808a16968601968752979096018054600181018255908352912092519201805494519351909516600160401b02600160401b600160a01b0319938216600160201b0267ffffffffffffffff19909516929091169190911792909217161790555b95945050505050565b8060008360ff1661010081106122e4576122e46133c2565b60029182820401919006600c026101000a8154816001600160601b0302191690836001600160601b031602179055508160ff167f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf8260405161235591906001600160601b0391909116815260200190565b60405180910390a25050565b60008151116123c65760405162461bcd60e51b815260206004820152603860248201526000805160206136cf83398151915260448201527f3a206e6f20737472617465676965732070726f7669646564000000000000000060648201526084016105e8565b805160ff831660009081526101816020908152604090912054906123ea8383613632565b111561245a5760405162461bcd60e51b815260206004820152604560248201526000805160206136cf83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a4016105e8565b60005b828110156127415760005b6124728284613632565b8110156125545784828151811061248b5761248b6133c2565b6020026020010151600001516001600160a01b031661018160008860ff1660ff16815260200190815260200160002082815481106124cb576124cb6133c2565b6000918252602090912001546001600160a01b031614156125425760405162461bcd60e51b815260206004820152603d60248201526000805160206136cf83398151915260448201527f3a2063616e6e6f74206164642073616d6520737472617465677920327800000060648201526084016105e8565b8061254c816134f3565b915050612468565b506000848281518110612569576125696133c2565b6020026020010151602001516001600160601b0316116125ee5760405162461bcd60e51b815260206004820152604660248201526000805160206136cf83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a4016105e8565b60ff85166000908152610181602052604090208451859083908110612615576126156133c2565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612692576126926133c2565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a758583815181106126ef576126ef6133c2565b60200260200101516000015186848151811061270d5761270d6133c2565b602002602001015160200151604051612727929190612c15565b60405180910390a280612739816134f3565b91505061245d565b5050505050565b816000015163ffffffff168163ffffffff1610156127f45760405162461bcd60e51b815260206004820152606060248201527f5374616b6552656769737472792e5f76616c69646174654f70657261746f725360448201527f74616b654174426c6f636b4e756d6265723a206f70657261746f725374616b6560648201527f5570646174652069732066726f6d20616674657220626c6f636b4e756d626572608482015260a4016105e8565b602082015163ffffffff16158061281a5750816020015163ffffffff168163ffffffff16105b6128cf5760405162461bcd60e51b815260206004820152607460248201527f5374616b6552656769737472792e5f76616c69646174654f70657261746f725360448201527f74616b654174426c6f636b4e756d6265723a2074686572652069732061206e6560648201527f776572206f70657261746f725374616b6555706461746520617661696c61626c60848201527332903132b337b93290313637b1b5a73ab6b132b960611b60a482015260c4016105e8565b5050565b60008381526101806020908152604080832060ff86168452909152812054815b81811015612aaf5760008681526101806020908152604080832060ff89168452909152902063ffffffff851690600161292c8486613580565b6129369190613580565b81548110612946576129466133c2565b60009182526020909120015463ffffffff1611612a9d5760008681526101806020908152604080832060ff89168452909152812060016129868486613580565b6129909190613580565b815481106129a0576129a06133c2565b600091825260209091200154600160201b900463ffffffff1690508015806129d357508463ffffffff168163ffffffff16115b612a7d5760405162461bcd60e51b815260206004820152606960248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206f70657260648201527f61746f72496420686173206e6f207374616b652075706461746520617420626c60848201526837b1b5a73ab6b132b960b91b60a482015260c4016105e8565b6001612a898385613580565b612a939190613580565b93505050506113a4565b80612aa7816134f3565b9150506128f3565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e4016105e8565b60006113a46001600160601b0380851690841661364a565b600080821215612bb057612b9f82613689565b612ba990846136a6565b9050610c83565b612ba98284613607565b803560ff81168114612bcb57600080fd5b919050565b600060208284031215612be257600080fd5b6113a482612bba565b60008060408385031215612bfe57600080fd5b612c0783612bba565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4c57600080fd5b50565b60008060408385031215612c6257600080fd5b612c6b83612bba565b91506020830135612c7b81612c37565b809150509250929050565b60008083601f840112612c9857600080fd5b5081356001600160401b03811115612caf57600080fd5b6020830191508360208260051b8501011115611ea057600080fd5b600080600080600060608688031215612ce257600080fd5b612ceb86612bba565b945060208601356001600160401b0380821115612d0757600080fd5b612d1389838a01612c86565b90965094506040880135915080821115612d2c57600080fd5b50612d3988828901612c86565b969995985093965092949392505050565b60008083601f840112612d5c57600080fd5b5081356001600160401b03811115612d7357600080fd5b602083019150836020828501011115611ea057600080fd5b60008060008060608587031215612da157600080fd5b8435612dac81612c37565b93506020850135925060408501356001600160401b03811115612dce57600080fd5b612dda87828801612d4a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e1f5781516001600160601b031687529582019590820190600101612dfa565b509495945050505050565b604081526000612e3d6040830185612de6565b82810360208401526122c38185612de6565b60008060408385031215612e6257600080fd5b82359150612e7260208401612bba565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee757612ed483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e97565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2b57612f2b612ef3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5957612f59612ef3565b604052919050565b60006001600160401b03821115612f7a57612f7a612ef3565b5060051b60200190565b60008060408385031215612f9757600080fd5b612fa083612bba565b91506020808401356001600160401b03811115612fbc57600080fd5b8401601f81018613612fcd57600080fd5b8035612fe0612fdb82612f61565b612f31565b81815260059190911b82018301908381019088831115612fff57600080fd5b928401925b8284101561301d57833582529284019290840190613004565b80955050505050509250929050565b60006020828403121561303e57600080fd5b5035919050565b803563ffffffff81168114612bcb57600080fd5b60008060006040848603121561306e57600080fd5b61307784613045565b925060208401356001600160401b0381111561309257600080fd5b61309e86828701612d4a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee757835163ffffffff16835292840192918401916001016130c7565b6000806000606084860312156130fe57600080fd5b61310784612bba565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610c83565b80356001600160601b0381168114612bcb57600080fd5b6000806040838503121561317b57600080fd5b61318483612bba565b9150612e7260208401613151565b6000806000604084860312156131a757600080fd5b8335925060208401356001600160401b0381111561309257600080fd5b600082601f8301126131d557600080fd5b813560206131e5612fdb83612f61565b82815260069290921b8401810191818101908684111561320457600080fd5b8286015b8481101561325357604081890312156132215760008081fd5b613229612f09565b813561323481612c37565b8152613241828601613151565b81860152835291830191604001613208565b509695505050505050565b6000806040838503121561327157600080fd5b61327a83612bba565b915060208301356001600160401b0381111561329557600080fd5b6132a1858286016131c4565b9150509250929050565b6000806000606084860312156132c057600080fd5b6132c984612bba565b92506132d760208501613045565b9150604084013590509250925092565b6000806000606084860312156132fc57600080fd5b8335925061330c60208501612bba565b915061331a60408501613045565b90509250925092565b6000806000806080858703121561333957600080fd5b61334285612bba565b935061335060208601613045565b93969395505050506040820135916060013590565b60008060006060848603121561337a57600080fd5b61338384612bba565b925061339160208501613151565b915060408401356001600160401b038111156133ac57600080fd5b6133b8868287016131c4565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561343b57600080fd5b81516113a481612c37565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b6000602082840312156134d457600080fd5b6113a482613151565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613507576135076134dd565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b600082821015613592576135926134dd565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156135bf57600080fd5b5051919050565b60008160001904831182151516156135e0576135e06134dd565b500290565b60008261360257634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b03808316818516808303821115613629576136296134dd565b01949350505050565b60008219821115613645576136456134dd565b500190565b60008083128015600160ff1b850184121615613668576136686134dd565b6001600160ff1b0384018313811615613683576136836134dd565b50500390565b6000600160ff1b82141561369f5761369f6134dd565b5060000390565b60006001600160601b03838116908316818110156136c6576136c66134dd565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220f8bd2e89aa01df19f1101e12894feef808c3ad85cac17b9fb63ea37bfdd13db464736f6c634300080c0033", } // ContractStakeRegistryABI is the input ABI used to generate the binding from. @@ -57,7 +57,7 @@ var ContractStakeRegistryABI = ContractStakeRegistryMetaData.ABI var ContractStakeRegistryBin = ContractStakeRegistryMetaData.Bin // DeployContractStakeRegistry deploys a new Ethereum contract, binding an instance of ContractStakeRegistry to it. -func DeployContractStakeRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, _registryCoordinator common.Address, _strategyManager common.Address, _serviceManager common.Address) (common.Address, *types.Transaction, *ContractStakeRegistry, error) { +func DeployContractStakeRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, _registryCoordinator common.Address, _delegationManager common.Address) (common.Address, *types.Transaction, *ContractStakeRegistry, error) { parsed, err := ContractStakeRegistryMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -66,7 +66,7 @@ func DeployContractStakeRegistry(auth *bind.TransactOpts, backend bind.ContractB return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractStakeRegistryBin), backend, _registryCoordinator, _strategyManager, _serviceManager) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractStakeRegistryBin), backend, _registryCoordinator, _delegationManager) if err != nil { return common.Address{}, nil, nil, err } @@ -215,37 +215,6 @@ func (_ContractStakeRegistry *ContractStakeRegistryTransactorRaw) Transact(opts return _ContractStakeRegistry.Contract.contract.Transact(opts, method, params...) } -// MAXQUORUMCOUNT is a free data retrieval call binding the contract method 0xa6734667. -// -// Solidity: function MAX_QUORUM_COUNT() view returns(uint8) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) MAXQUORUMCOUNT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "MAX_QUORUM_COUNT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXQUORUMCOUNT is a free data retrieval call binding the contract method 0xa6734667. -// -// Solidity: function MAX_QUORUM_COUNT() view returns(uint8) -func (_ContractStakeRegistry *ContractStakeRegistrySession) MAXQUORUMCOUNT() (uint8, error) { - return _ContractStakeRegistry.Contract.MAXQUORUMCOUNT(&_ContractStakeRegistry.CallOpts) -} - -// MAXQUORUMCOUNT is a free data retrieval call binding the contract method 0xa6734667. -// -// Solidity: function MAX_QUORUM_COUNT() view returns(uint8) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) MAXQUORUMCOUNT() (uint8, error) { - return _ContractStakeRegistry.Contract.MAXQUORUMCOUNT(&_ContractStakeRegistry.CallOpts) -} - // MAXWEIGHINGFUNCTIONLENGTH is a free data retrieval call binding the contract method 0x7c172347. // // Solidity: function MAX_WEIGHING_FUNCTION_LENGTH() view returns(uint8) @@ -339,12 +308,12 @@ func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) Delegation() ( return _ContractStakeRegistry.Contract.Delegation(&_ContractStakeRegistry.CallOpts) } -// GetCurrentOperatorStakeForQuorum is a free data retrieval call binding the contract method 0x6ab538d4. +// GetCurrentStake is a free data retrieval call binding the contract method 0x5401ed27. // -// Solidity: function getCurrentOperatorStakeForQuorum(bytes32 operatorId, uint8 quorumNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetCurrentOperatorStakeForQuorum(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { +// Solidity: function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetCurrentStake(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getCurrentOperatorStakeForQuorum", operatorId, quorumNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getCurrentStake", operatorId, quorumNumber) if err != nil { return *new(*big.Int), err @@ -356,26 +325,26 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetCurrentOperatorSta } -// GetCurrentOperatorStakeForQuorum is a free data retrieval call binding the contract method 0x6ab538d4. +// GetCurrentStake is a free data retrieval call binding the contract method 0x5401ed27. // -// Solidity: function getCurrentOperatorStakeForQuorum(bytes32 operatorId, uint8 quorumNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetCurrentOperatorStakeForQuorum(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetCurrentOperatorStakeForQuorum(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetCurrentStake(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetCurrentStake(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetCurrentOperatorStakeForQuorum is a free data retrieval call binding the contract method 0x6ab538d4. +// GetCurrentStake is a free data retrieval call binding the contract method 0x5401ed27. // -// Solidity: function getCurrentOperatorStakeForQuorum(bytes32 operatorId, uint8 quorumNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetCurrentOperatorStakeForQuorum(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetCurrentOperatorStakeForQuorum(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetCurrentStake(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetCurrentStake(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetCurrentTotalStakeForQuorum is a free data retrieval call binding the contract method 0xc8f739d0. +// GetCurrentTotalStake is a free data retrieval call binding the contract method 0xd5eccc05. // -// Solidity: function getCurrentTotalStakeForQuorum(uint8 quorumNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetCurrentTotalStakeForQuorum(opts *bind.CallOpts, quorumNumber uint8) (*big.Int, error) { +// Solidity: function getCurrentTotalStake(uint8 quorumNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetCurrentTotalStake(opts *bind.CallOpts, quorumNumber uint8) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getCurrentTotalStakeForQuorum", quorumNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getCurrentTotalStake", quorumNumber) if err != nil { return *new(*big.Int), err @@ -387,57 +356,57 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetCurrentTotalStakeF } -// GetCurrentTotalStakeForQuorum is a free data retrieval call binding the contract method 0xc8f739d0. +// GetCurrentTotalStake is a free data retrieval call binding the contract method 0xd5eccc05. // -// Solidity: function getCurrentTotalStakeForQuorum(uint8 quorumNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetCurrentTotalStakeForQuorum(quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetCurrentTotalStakeForQuorum(&_ContractStakeRegistry.CallOpts, quorumNumber) +// Solidity: function getCurrentTotalStake(uint8 quorumNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetCurrentTotalStake(quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetCurrentTotalStake(&_ContractStakeRegistry.CallOpts, quorumNumber) } -// GetCurrentTotalStakeForQuorum is a free data retrieval call binding the contract method 0xc8f739d0. +// GetCurrentTotalStake is a free data retrieval call binding the contract method 0xd5eccc05. // -// Solidity: function getCurrentTotalStakeForQuorum(uint8 quorumNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetCurrentTotalStakeForQuorum(quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetCurrentTotalStakeForQuorum(&_ContractStakeRegistry.CallOpts, quorumNumber) +// Solidity: function getCurrentTotalStake(uint8 quorumNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetCurrentTotalStake(quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetCurrentTotalStake(&_ContractStakeRegistry.CallOpts, quorumNumber) } -// GetLengthOfOperatorIdStakeHistoryForQuorum is a free data retrieval call binding the contract method 0x6e8f03ca. +// GetLatestStakeUpdate is a free data retrieval call binding the contract method 0xf851e198. // -// Solidity: function getLengthOfOperatorIdStakeHistoryForQuorum(bytes32 operatorId, uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetLengthOfOperatorIdStakeHistoryForQuorum(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { +// Solidity: function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetLatestStakeUpdate(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) (IStakeRegistryStakeUpdate, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getLengthOfOperatorIdStakeHistoryForQuorum", operatorId, quorumNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getLatestStakeUpdate", operatorId, quorumNumber) if err != nil { - return *new(*big.Int), err + return *new(IStakeRegistryStakeUpdate), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(IStakeRegistryStakeUpdate)).(*IStakeRegistryStakeUpdate) return out0, err } -// GetLengthOfOperatorIdStakeHistoryForQuorum is a free data retrieval call binding the contract method 0x6e8f03ca. +// GetLatestStakeUpdate is a free data retrieval call binding the contract method 0xf851e198. // -// Solidity: function getLengthOfOperatorIdStakeHistoryForQuorum(bytes32 operatorId, uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetLengthOfOperatorIdStakeHistoryForQuorum(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetLengthOfOperatorIdStakeHistoryForQuorum(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetLatestStakeUpdate(operatorId [32]byte, quorumNumber uint8) (IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetLatestStakeUpdate(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetLengthOfOperatorIdStakeHistoryForQuorum is a free data retrieval call binding the contract method 0x6e8f03ca. +// GetLatestStakeUpdate is a free data retrieval call binding the contract method 0xf851e198. // -// Solidity: function getLengthOfOperatorIdStakeHistoryForQuorum(bytes32 operatorId, uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetLengthOfOperatorIdStakeHistoryForQuorum(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetLengthOfOperatorIdStakeHistoryForQuorum(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetLatestStakeUpdate(operatorId [32]byte, quorumNumber uint8) (IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetLatestStakeUpdate(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetLengthOfTotalStakeHistoryForQuorum is a free data retrieval call binding the contract method 0xe89c0a00. +// GetStakeAtBlockNumber is a free data retrieval call binding the contract method 0xfa28c627. // -// Solidity: function getLengthOfTotalStakeHistoryForQuorum(uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetLengthOfTotalStakeHistoryForQuorum(opts *bind.CallOpts, quorumNumber uint8) (*big.Int, error) { +// Solidity: function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeAtBlockNumber(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getLengthOfTotalStakeHistoryForQuorum", quorumNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeAtBlockNumber", operatorId, quorumNumber, blockNumber) if err != nil { return *new(*big.Int), err @@ -449,88 +418,88 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetLengthOfTotalStake } -// GetLengthOfTotalStakeHistoryForQuorum is a free data retrieval call binding the contract method 0xe89c0a00. +// GetStakeAtBlockNumber is a free data retrieval call binding the contract method 0xfa28c627. // -// Solidity: function getLengthOfTotalStakeHistoryForQuorum(uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetLengthOfTotalStakeHistoryForQuorum(quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetLengthOfTotalStakeHistoryForQuorum(&_ContractStakeRegistry.CallOpts, quorumNumber) +// Solidity: function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetStakeAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) } -// GetLengthOfTotalStakeHistoryForQuorum is a free data retrieval call binding the contract method 0xe89c0a00. +// GetStakeAtBlockNumber is a free data retrieval call binding the contract method 0xfa28c627. // -// Solidity: function getLengthOfTotalStakeHistoryForQuorum(uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetLengthOfTotalStakeHistoryForQuorum(quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetLengthOfTotalStakeHistoryForQuorum(&_ContractStakeRegistry.CallOpts, quorumNumber) +// Solidity: function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetStakeAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) } -// GetMostRecentStakeUpdateByOperatorId is a free data retrieval call binding the contract method 0xcd050d9c. +// GetStakeAtBlockNumberAndIndex is a free data retrieval call binding the contract method 0xf2be94ae. // -// Solidity: function getMostRecentStakeUpdateByOperatorId(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetMostRecentStakeUpdateByOperatorId(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) (IStakeRegistryOperatorStakeUpdate, error) { +// Solidity: function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeAtBlockNumberAndIndex(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32, operatorId [32]byte, index *big.Int) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getMostRecentStakeUpdateByOperatorId", operatorId, quorumNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeAtBlockNumberAndIndex", quorumNumber, blockNumber, operatorId, index) if err != nil { - return *new(IStakeRegistryOperatorStakeUpdate), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(IStakeRegistryOperatorStakeUpdate)).(*IStakeRegistryOperatorStakeUpdate) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// GetMostRecentStakeUpdateByOperatorId is a free data retrieval call binding the contract method 0xcd050d9c. +// GetStakeAtBlockNumberAndIndex is a free data retrieval call binding the contract method 0xf2be94ae. // -// Solidity: function getMostRecentStakeUpdateByOperatorId(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetMostRecentStakeUpdateByOperatorId(operatorId [32]byte, quorumNumber uint8) (IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetMostRecentStakeUpdateByOperatorId(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeAtBlockNumberAndIndex(quorumNumber uint8, blockNumber uint32, operatorId [32]byte, index *big.Int) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetStakeAtBlockNumberAndIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, operatorId, index) } -// GetMostRecentStakeUpdateByOperatorId is a free data retrieval call binding the contract method 0xcd050d9c. +// GetStakeAtBlockNumberAndIndex is a free data retrieval call binding the contract method 0xf2be94ae. // -// Solidity: function getMostRecentStakeUpdateByOperatorId(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetMostRecentStakeUpdateByOperatorId(operatorId [32]byte, quorumNumber uint8) (IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetMostRecentStakeUpdateByOperatorId(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeAtBlockNumberAndIndex(quorumNumber uint8, blockNumber uint32, operatorId [32]byte, index *big.Int) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetStakeAtBlockNumberAndIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, operatorId, index) } -// GetOperatorIdToStakeHistory is a free data retrieval call binding the contract method 0x944472a9. +// GetStakeHistory is a free data retrieval call binding the contract method 0x2cd95940. // -// Solidity: function getOperatorIdToStakeHistory(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)[]) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetOperatorIdToStakeHistory(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) ([]IStakeRegistryOperatorStakeUpdate, error) { +// Solidity: function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)[]) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeHistory(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) ([]IStakeRegistryStakeUpdate, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getOperatorIdToStakeHistory", operatorId, quorumNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeHistory", operatorId, quorumNumber) if err != nil { - return *new([]IStakeRegistryOperatorStakeUpdate), err + return *new([]IStakeRegistryStakeUpdate), err } - out0 := *abi.ConvertType(out[0], new([]IStakeRegistryOperatorStakeUpdate)).(*[]IStakeRegistryOperatorStakeUpdate) + out0 := *abi.ConvertType(out[0], new([]IStakeRegistryStakeUpdate)).(*[]IStakeRegistryStakeUpdate) return out0, err } -// GetOperatorIdToStakeHistory is a free data retrieval call binding the contract method 0x944472a9. +// GetStakeHistory is a free data retrieval call binding the contract method 0x2cd95940. // -// Solidity: function getOperatorIdToStakeHistory(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)[]) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetOperatorIdToStakeHistory(operatorId [32]byte, quorumNumber uint8) ([]IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetOperatorIdToStakeHistory(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)[]) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeHistory(operatorId [32]byte, quorumNumber uint8) ([]IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetStakeHistory(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetOperatorIdToStakeHistory is a free data retrieval call binding the contract method 0x944472a9. +// GetStakeHistory is a free data retrieval call binding the contract method 0x2cd95940. // -// Solidity: function getOperatorIdToStakeHistory(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)[]) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetOperatorIdToStakeHistory(operatorId [32]byte, quorumNumber uint8) ([]IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetOperatorIdToStakeHistory(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) +// Solidity: function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) view returns((uint32,uint32,uint96)[]) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeHistory(operatorId [32]byte, quorumNumber uint8) ([]IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetStakeHistory(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetStakeForOperatorIdForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x1b327225. +// GetStakeHistoryLength is a free data retrieval call binding the contract method 0x4bd26e09. // -// Solidity: function getStakeForOperatorIdForQuorumAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeForOperatorIdForQuorumAtBlockNumber(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (*big.Int, error) { +// Solidity: function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeHistoryLength(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeForOperatorIdForQuorumAtBlockNumber", operatorId, quorumNumber, blockNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeHistoryLength", operatorId, quorumNumber) if err != nil { return *new(*big.Int), err @@ -542,119 +511,119 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeForOperatorId } -// GetStakeForOperatorIdForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x1b327225. +// GetStakeHistoryLength is a free data retrieval call binding the contract method 0x4bd26e09. // -// Solidity: function getStakeForOperatorIdForQuorumAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeForOperatorIdForQuorumAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetStakeForOperatorIdForQuorumAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) +// Solidity: function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeHistoryLength(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetStakeHistoryLength(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetStakeForOperatorIdForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x1b327225. +// GetStakeHistoryLength is a free data retrieval call binding the contract method 0x4bd26e09. // -// Solidity: function getStakeForOperatorIdForQuorumAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeForOperatorIdForQuorumAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetStakeForOperatorIdForQuorumAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) +// Solidity: function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeHistoryLength(operatorId [32]byte, quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetStakeHistoryLength(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber) } -// GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex is a free data retrieval call binding the contract method 0xa43cde89. +// GetStakeUpdateAtIndex is a free data retrieval call binding the contract method 0xac6bfb03. // -// Solidity: function getStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32, operatorId [32]byte, index *big.Int) (*big.Int, error) { +// Solidity: function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeUpdateAtIndex(opts *bind.CallOpts, quorumNumber uint8, operatorId [32]byte, index *big.Int) (IStakeRegistryStakeUpdate, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeForQuorumAtBlockNumberFromOperatorIdAndIndex", quorumNumber, blockNumber, operatorId, index) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeUpdateAtIndex", quorumNumber, operatorId, index) if err != nil { - return *new(*big.Int), err + return *new(IStakeRegistryStakeUpdate), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(IStakeRegistryStakeUpdate)).(*IStakeRegistryStakeUpdate) return out0, err } -// GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex is a free data retrieval call binding the contract method 0xa43cde89. +// GetStakeUpdateAtIndex is a free data retrieval call binding the contract method 0xac6bfb03. // -// Solidity: function getStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(quorumNumber uint8, blockNumber uint32, operatorId [32]byte, index *big.Int) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, operatorId, index) +// Solidity: function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeUpdateAtIndex(quorumNumber uint8, operatorId [32]byte, index *big.Int) (IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetStakeUpdateAtIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, operatorId, index) } -// GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex is a free data retrieval call binding the contract method 0xa43cde89. +// GetStakeUpdateAtIndex is a free data retrieval call binding the contract method 0xac6bfb03. // -// Solidity: function getStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(quorumNumber uint8, blockNumber uint32, operatorId [32]byte, index *big.Int) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetStakeForQuorumAtBlockNumberFromOperatorIdAndIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, operatorId, index) +// Solidity: function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeUpdateAtIndex(quorumNumber uint8, operatorId [32]byte, index *big.Int) (IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetStakeUpdateAtIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, operatorId, index) } -// GetStakeUpdateForQuorumFromOperatorIdAndIndex is a free data retrieval call binding the contract method 0x248d6573. +// GetStakeUpdateIndexAtBlockNumber is a free data retrieval call binding the contract method 0xdd9846b9. // -// Solidity: function getStakeUpdateForQuorumFromOperatorIdAndIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeUpdateForQuorumFromOperatorIdAndIndex(opts *bind.CallOpts, quorumNumber uint8, operatorId [32]byte, index *big.Int) (IStakeRegistryOperatorStakeUpdate, error) { +// Solidity: function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint32) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeUpdateIndexAtBlockNumber(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (uint32, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeUpdateForQuorumFromOperatorIdAndIndex", quorumNumber, operatorId, index) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeUpdateIndexAtBlockNumber", operatorId, quorumNumber, blockNumber) if err != nil { - return *new(IStakeRegistryOperatorStakeUpdate), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(IStakeRegistryOperatorStakeUpdate)).(*IStakeRegistryOperatorStakeUpdate) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// GetStakeUpdateForQuorumFromOperatorIdAndIndex is a free data retrieval call binding the contract method 0x248d6573. +// GetStakeUpdateIndexAtBlockNumber is a free data retrieval call binding the contract method 0xdd9846b9. // -// Solidity: function getStakeUpdateForQuorumFromOperatorIdAndIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeUpdateForQuorumFromOperatorIdAndIndex(quorumNumber uint8, operatorId [32]byte, index *big.Int) (IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetStakeUpdateForQuorumFromOperatorIdAndIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, operatorId, index) +// Solidity: function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint32) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeUpdateIndexAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (uint32, error) { + return _ContractStakeRegistry.Contract.GetStakeUpdateIndexAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) } -// GetStakeUpdateForQuorumFromOperatorIdAndIndex is a free data retrieval call binding the contract method 0x248d6573. +// GetStakeUpdateIndexAtBlockNumber is a free data retrieval call binding the contract method 0xdd9846b9. // -// Solidity: function getStakeUpdateForQuorumFromOperatorIdAndIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeUpdateForQuorumFromOperatorIdAndIndex(quorumNumber uint8, operatorId [32]byte, index *big.Int) (IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetStakeUpdateForQuorumFromOperatorIdAndIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, operatorId, index) +// Solidity: function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint32) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeUpdateIndexAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (uint32, error) { + return _ContractStakeRegistry.Contract.GetStakeUpdateIndexAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) } -// GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x48085866. +// GetTotalStakeAtBlockNumberFromIndex is a free data retrieval call binding the contract method 0xc8294c56. // -// Solidity: function getStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint32) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(opts *bind.CallOpts, operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (uint32, error) { +// Solidity: function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeAtBlockNumberFromIndex(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32, index *big.Int) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber", operatorId, quorumNumber, blockNumber) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeAtBlockNumberFromIndex", quorumNumber, blockNumber, index) if err != nil { - return *new(uint32), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x48085866. +// GetTotalStakeAtBlockNumberFromIndex is a free data retrieval call binding the contract method 0xc8294c56. // -// Solidity: function getStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint32) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (uint32, error) { - return _ContractStakeRegistry.Contract.GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) +// Solidity: function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeAtBlockNumberFromIndex(quorumNumber uint8, blockNumber uint32, index *big.Int) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeAtBlockNumberFromIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, index) } -// GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber is a free data retrieval call binding the contract method 0x48085866. +// GetTotalStakeAtBlockNumberFromIndex is a free data retrieval call binding the contract method 0xc8294c56. // -// Solidity: function getStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) view returns(uint32) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(operatorId [32]byte, quorumNumber uint8, blockNumber uint32) (uint32, error) { - return _ContractStakeRegistry.Contract.GetStakeUpdateIndexForOperatorIdForQuorumAtBlockNumber(&_ContractStakeRegistry.CallOpts, operatorId, quorumNumber, blockNumber) +// Solidity: function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(uint96) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeAtBlockNumberFromIndex(quorumNumber uint8, blockNumber uint32, index *big.Int) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeAtBlockNumberFromIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, index) } -// GetTotalStakeAtBlockNumberFromIndex is a free data retrieval call binding the contract method 0xc8294c56. +// GetTotalStakeHistoryLength is a free data retrieval call binding the contract method 0x0491b41c. // -// Solidity: function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeAtBlockNumberFromIndex(opts *bind.CallOpts, quorumNumber uint8, blockNumber uint32, index *big.Int) (*big.Int, error) { +// Solidity: function getTotalStakeHistoryLength(uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeHistoryLength(opts *bind.CallOpts, quorumNumber uint8) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeAtBlockNumberFromIndex", quorumNumber, blockNumber, index) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeHistoryLength", quorumNumber) if err != nil { return *new(*big.Int), err @@ -666,26 +635,26 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeAtBlockN } -// GetTotalStakeAtBlockNumberFromIndex is a free data retrieval call binding the contract method 0xc8294c56. +// GetTotalStakeHistoryLength is a free data retrieval call binding the contract method 0x0491b41c. // -// Solidity: function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeAtBlockNumberFromIndex(quorumNumber uint8, blockNumber uint32, index *big.Int) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetTotalStakeAtBlockNumberFromIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, index) +// Solidity: function getTotalStakeHistoryLength(uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeHistoryLength(quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeHistoryLength(&_ContractStakeRegistry.CallOpts, quorumNumber) } -// GetTotalStakeAtBlockNumberFromIndex is a free data retrieval call binding the contract method 0xc8294c56. +// GetTotalStakeHistoryLength is a free data retrieval call binding the contract method 0x0491b41c. // -// Solidity: function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) view returns(uint96) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeAtBlockNumberFromIndex(quorumNumber uint8, blockNumber uint32, index *big.Int) (*big.Int, error) { - return _ContractStakeRegistry.Contract.GetTotalStakeAtBlockNumberFromIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, blockNumber, index) +// Solidity: function getTotalStakeHistoryLength(uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeHistoryLength(quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeHistoryLength(&_ContractStakeRegistry.CallOpts, quorumNumber) } -// GetTotalStakeIndicesByQuorumNumbersAtBlockNumber is a free data retrieval call binding the contract method 0xe192e9ad. +// GetTotalStakeIndicesAtBlockNumber is a free data retrieval call binding the contract method 0x81c07502. // -// Solidity: function getTotalStakeIndicesByQuorumNumbersAtBlockNumber(uint32 blockNumber, bytes quorumNumbers) view returns(uint32[]) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeIndicesByQuorumNumbersAtBlockNumber(opts *bind.CallOpts, blockNumber uint32, quorumNumbers []byte) ([]uint32, error) { +// Solidity: function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes quorumNumbers) view returns(uint32[]) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeIndicesAtBlockNumber(opts *bind.CallOpts, blockNumber uint32, quorumNumbers []byte) ([]uint32, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeIndicesByQuorumNumbersAtBlockNumber", blockNumber, quorumNumbers) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeIndicesAtBlockNumber", blockNumber, quorumNumbers) if err != nil { return *new([]uint32), err @@ -697,49 +666,49 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeIndicesB } -// GetTotalStakeIndicesByQuorumNumbersAtBlockNumber is a free data retrieval call binding the contract method 0xe192e9ad. +// GetTotalStakeIndicesAtBlockNumber is a free data retrieval call binding the contract method 0x81c07502. // -// Solidity: function getTotalStakeIndicesByQuorumNumbersAtBlockNumber(uint32 blockNumber, bytes quorumNumbers) view returns(uint32[]) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeIndicesByQuorumNumbersAtBlockNumber(blockNumber uint32, quorumNumbers []byte) ([]uint32, error) { - return _ContractStakeRegistry.Contract.GetTotalStakeIndicesByQuorumNumbersAtBlockNumber(&_ContractStakeRegistry.CallOpts, blockNumber, quorumNumbers) +// Solidity: function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes quorumNumbers) view returns(uint32[]) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeIndicesAtBlockNumber(blockNumber uint32, quorumNumbers []byte) ([]uint32, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeIndicesAtBlockNumber(&_ContractStakeRegistry.CallOpts, blockNumber, quorumNumbers) } -// GetTotalStakeIndicesByQuorumNumbersAtBlockNumber is a free data retrieval call binding the contract method 0xe192e9ad. +// GetTotalStakeIndicesAtBlockNumber is a free data retrieval call binding the contract method 0x81c07502. // -// Solidity: function getTotalStakeIndicesByQuorumNumbersAtBlockNumber(uint32 blockNumber, bytes quorumNumbers) view returns(uint32[]) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeIndicesByQuorumNumbersAtBlockNumber(blockNumber uint32, quorumNumbers []byte) ([]uint32, error) { - return _ContractStakeRegistry.Contract.GetTotalStakeIndicesByQuorumNumbersAtBlockNumber(&_ContractStakeRegistry.CallOpts, blockNumber, quorumNumbers) +// Solidity: function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes quorumNumbers) view returns(uint32[]) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeIndicesAtBlockNumber(blockNumber uint32, quorumNumbers []byte) ([]uint32, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeIndicesAtBlockNumber(&_ContractStakeRegistry.CallOpts, blockNumber, quorumNumbers) } -// GetTotalStakeUpdateForQuorumFromIndex is a free data retrieval call binding the contract method 0xe25427dd. +// GetTotalStakeUpdateAtIndex is a free data retrieval call binding the contract method 0xb6904b78. // -// Solidity: function getTotalStakeUpdateForQuorumFromIndex(uint8 quorumNumber, uint256 index) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeUpdateForQuorumFromIndex(opts *bind.CallOpts, quorumNumber uint8, index *big.Int) (IStakeRegistryOperatorStakeUpdate, error) { +// Solidity: function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) GetTotalStakeUpdateAtIndex(opts *bind.CallOpts, quorumNumber uint8, index *big.Int) (IStakeRegistryStakeUpdate, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeUpdateForQuorumFromIndex", quorumNumber, index) + err := _ContractStakeRegistry.contract.Call(opts, &out, "getTotalStakeUpdateAtIndex", quorumNumber, index) if err != nil { - return *new(IStakeRegistryOperatorStakeUpdate), err + return *new(IStakeRegistryStakeUpdate), err } - out0 := *abi.ConvertType(out[0], new(IStakeRegistryOperatorStakeUpdate)).(*IStakeRegistryOperatorStakeUpdate) + out0 := *abi.ConvertType(out[0], new(IStakeRegistryStakeUpdate)).(*IStakeRegistryStakeUpdate) return out0, err } -// GetTotalStakeUpdateForQuorumFromIndex is a free data retrieval call binding the contract method 0xe25427dd. +// GetTotalStakeUpdateAtIndex is a free data retrieval call binding the contract method 0xb6904b78. // -// Solidity: function getTotalStakeUpdateForQuorumFromIndex(uint8 quorumNumber, uint256 index) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeUpdateForQuorumFromIndex(quorumNumber uint8, index *big.Int) (IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetTotalStakeUpdateForQuorumFromIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) +// Solidity: function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistrySession) GetTotalStakeUpdateAtIndex(quorumNumber uint8, index *big.Int) (IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeUpdateAtIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) } -// GetTotalStakeUpdateForQuorumFromIndex is a free data retrieval call binding the contract method 0xe25427dd. +// GetTotalStakeUpdateAtIndex is a free data retrieval call binding the contract method 0xb6904b78. // -// Solidity: function getTotalStakeUpdateForQuorumFromIndex(uint8 quorumNumber, uint256 index) view returns((uint32,uint32,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeUpdateForQuorumFromIndex(quorumNumber uint8, index *big.Int) (IStakeRegistryOperatorStakeUpdate, error) { - return _ContractStakeRegistry.Contract.GetTotalStakeUpdateForQuorumFromIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) +// Solidity: function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) view returns((uint32,uint32,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) GetTotalStakeUpdateAtIndex(quorumNumber uint8, index *big.Int) (IStakeRegistryStakeUpdate, error) { + return _ContractStakeRegistry.Contract.GetTotalStakeUpdateAtIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) } // MinimumStakeForQuorum is a free data retrieval call binding the contract method 0x7ed9430f. @@ -773,37 +742,6 @@ func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) MinimumStakeFo return _ContractStakeRegistry.Contract.MinimumStakeForQuorum(&_ContractStakeRegistry.CallOpts, arg0) } -// QuorumCount is a free data retrieval call binding the contract method 0x9aa1653d. -// -// Solidity: function quorumCount() view returns(uint16) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) QuorumCount(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "quorumCount") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// QuorumCount is a free data retrieval call binding the contract method 0x9aa1653d. -// -// Solidity: function quorumCount() view returns(uint16) -func (_ContractStakeRegistry *ContractStakeRegistrySession) QuorumCount() (uint16, error) { - return _ContractStakeRegistry.Contract.QuorumCount(&_ContractStakeRegistry.CallOpts) -} - -// QuorumCount is a free data retrieval call binding the contract method 0x9aa1653d. -// -// Solidity: function quorumCount() view returns(uint16) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) QuorumCount() (uint16, error) { - return _ContractStakeRegistry.Contract.QuorumCount(&_ContractStakeRegistry.CallOpts) -} - // RegistryCoordinator is a free data retrieval call binding the contract method 0x6d14a987. // // Solidity: function registryCoordinator() view returns(address) @@ -835,77 +773,15 @@ func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) RegistryCoordi return _ContractStakeRegistry.Contract.RegistryCoordinator(&_ContractStakeRegistry.CallOpts) } -// ServiceManager is a free data retrieval call binding the contract method 0x3998fdd3. -// -// Solidity: function serviceManager() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) ServiceManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "serviceManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ServiceManager is a free data retrieval call binding the contract method 0x3998fdd3. -// -// Solidity: function serviceManager() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistrySession) ServiceManager() (common.Address, error) { - return _ContractStakeRegistry.Contract.ServiceManager(&_ContractStakeRegistry.CallOpts) -} - -// ServiceManager is a free data retrieval call binding the contract method 0x3998fdd3. +// StrategyParams is a free data retrieval call binding the contract method 0x08732461. // -// Solidity: function serviceManager() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) ServiceManager() (common.Address, error) { - return _ContractStakeRegistry.Contract.ServiceManager(&_ContractStakeRegistry.CallOpts) -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "slasher") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistrySession) Slasher() (common.Address, error) { - return _ContractStakeRegistry.Contract.Slasher(&_ContractStakeRegistry.CallOpts) -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) Slasher() (common.Address, error) { - return _ContractStakeRegistry.Contract.Slasher(&_ContractStakeRegistry.CallOpts) -} - -// StrategiesConsideredAndMultipliers is a free data retrieval call binding the contract method 0xeb92199c. -// -// Solidity: function strategiesConsideredAndMultipliers(uint8 , uint256 ) view returns(address strategy, uint96 multiplier) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategiesConsideredAndMultipliers(opts *bind.CallOpts, arg0 uint8, arg1 *big.Int) (struct { +// Solidity: function strategyParams(uint8 , uint256 ) view returns(address strategy, uint96 multiplier) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategyParams(opts *bind.CallOpts, arg0 uint8, arg1 *big.Int) (struct { Strategy common.Address Multiplier *big.Int }, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "strategiesConsideredAndMultipliers", arg0, arg1) + err := _ContractStakeRegistry.contract.Call(opts, &out, "strategyParams", arg0, arg1) outstruct := new(struct { Strategy common.Address @@ -922,117 +798,86 @@ func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategiesConsideredA } -// StrategiesConsideredAndMultipliers is a free data retrieval call binding the contract method 0xeb92199c. +// StrategyParams is a free data retrieval call binding the contract method 0x08732461. // -// Solidity: function strategiesConsideredAndMultipliers(uint8 , uint256 ) view returns(address strategy, uint96 multiplier) -func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategiesConsideredAndMultipliers(arg0 uint8, arg1 *big.Int) (struct { +// Solidity: function strategyParams(uint8 , uint256 ) view returns(address strategy, uint96 multiplier) +func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategyParams(arg0 uint8, arg1 *big.Int) (struct { Strategy common.Address Multiplier *big.Int }, error) { - return _ContractStakeRegistry.Contract.StrategiesConsideredAndMultipliers(&_ContractStakeRegistry.CallOpts, arg0, arg1) + return _ContractStakeRegistry.Contract.StrategyParams(&_ContractStakeRegistry.CallOpts, arg0, arg1) } -// StrategiesConsideredAndMultipliers is a free data retrieval call binding the contract method 0xeb92199c. +// StrategyParams is a free data retrieval call binding the contract method 0x08732461. // -// Solidity: function strategiesConsideredAndMultipliers(uint8 , uint256 ) view returns(address strategy, uint96 multiplier) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategiesConsideredAndMultipliers(arg0 uint8, arg1 *big.Int) (struct { +// Solidity: function strategyParams(uint8 , uint256 ) view returns(address strategy, uint96 multiplier) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategyParams(arg0 uint8, arg1 *big.Int) (struct { Strategy common.Address Multiplier *big.Int }, error) { - return _ContractStakeRegistry.Contract.StrategiesConsideredAndMultipliers(&_ContractStakeRegistry.CallOpts, arg0, arg1) -} - -// StrategiesConsideredAndMultipliersLength is a free data retrieval call binding the contract method 0x9e8ca620. -// -// Solidity: function strategiesConsideredAndMultipliersLength(uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategiesConsideredAndMultipliersLength(opts *bind.CallOpts, quorumNumber uint8) (*big.Int, error) { - var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "strategiesConsideredAndMultipliersLength", quorumNumber) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - + return _ContractStakeRegistry.Contract.StrategyParams(&_ContractStakeRegistry.CallOpts, arg0, arg1) } -// StrategiesConsideredAndMultipliersLength is a free data retrieval call binding the contract method 0x9e8ca620. +// StrategyParamsByIndex is a free data retrieval call binding the contract method 0xadc804da. // -// Solidity: function strategiesConsideredAndMultipliersLength(uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategiesConsideredAndMultipliersLength(quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.StrategiesConsideredAndMultipliersLength(&_ContractStakeRegistry.CallOpts, quorumNumber) -} - -// StrategiesConsideredAndMultipliersLength is a free data retrieval call binding the contract method 0x9e8ca620. -// -// Solidity: function strategiesConsideredAndMultipliersLength(uint8 quorumNumber) view returns(uint256) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategiesConsideredAndMultipliersLength(quorumNumber uint8) (*big.Int, error) { - return _ContractStakeRegistry.Contract.StrategiesConsideredAndMultipliersLength(&_ContractStakeRegistry.CallOpts, quorumNumber) -} - -// StrategyAndWeightingMultiplierForQuorumByIndex is a free data retrieval call binding the contract method 0x7cc0d75f. -// -// Solidity: function strategyAndWeightingMultiplierForQuorumByIndex(uint8 quorumNumber, uint256 index) view returns((address,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategyAndWeightingMultiplierForQuorumByIndex(opts *bind.CallOpts, quorumNumber uint8, index *big.Int) (IVoteWeigherStrategyAndWeightingMultiplier, error) { +// Solidity: function strategyParamsByIndex(uint8 quorumNumber, uint256 index) view returns((address,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategyParamsByIndex(opts *bind.CallOpts, quorumNumber uint8, index *big.Int) (IStakeRegistryStrategyParams, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "strategyAndWeightingMultiplierForQuorumByIndex", quorumNumber, index) + err := _ContractStakeRegistry.contract.Call(opts, &out, "strategyParamsByIndex", quorumNumber, index) if err != nil { - return *new(IVoteWeigherStrategyAndWeightingMultiplier), err + return *new(IStakeRegistryStrategyParams), err } - out0 := *abi.ConvertType(out[0], new(IVoteWeigherStrategyAndWeightingMultiplier)).(*IVoteWeigherStrategyAndWeightingMultiplier) + out0 := *abi.ConvertType(out[0], new(IStakeRegistryStrategyParams)).(*IStakeRegistryStrategyParams) return out0, err } -// StrategyAndWeightingMultiplierForQuorumByIndex is a free data retrieval call binding the contract method 0x7cc0d75f. +// StrategyParamsByIndex is a free data retrieval call binding the contract method 0xadc804da. // -// Solidity: function strategyAndWeightingMultiplierForQuorumByIndex(uint8 quorumNumber, uint256 index) view returns((address,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategyAndWeightingMultiplierForQuorumByIndex(quorumNumber uint8, index *big.Int) (IVoteWeigherStrategyAndWeightingMultiplier, error) { - return _ContractStakeRegistry.Contract.StrategyAndWeightingMultiplierForQuorumByIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) +// Solidity: function strategyParamsByIndex(uint8 quorumNumber, uint256 index) view returns((address,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategyParamsByIndex(quorumNumber uint8, index *big.Int) (IStakeRegistryStrategyParams, error) { + return _ContractStakeRegistry.Contract.StrategyParamsByIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) } -// StrategyAndWeightingMultiplierForQuorumByIndex is a free data retrieval call binding the contract method 0x7cc0d75f. +// StrategyParamsByIndex is a free data retrieval call binding the contract method 0xadc804da. // -// Solidity: function strategyAndWeightingMultiplierForQuorumByIndex(uint8 quorumNumber, uint256 index) view returns((address,uint96)) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategyAndWeightingMultiplierForQuorumByIndex(quorumNumber uint8, index *big.Int) (IVoteWeigherStrategyAndWeightingMultiplier, error) { - return _ContractStakeRegistry.Contract.StrategyAndWeightingMultiplierForQuorumByIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) +// Solidity: function strategyParamsByIndex(uint8 quorumNumber, uint256 index) view returns((address,uint96)) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategyParamsByIndex(quorumNumber uint8, index *big.Int) (IStakeRegistryStrategyParams, error) { + return _ContractStakeRegistry.Contract.StrategyParamsByIndex(&_ContractStakeRegistry.CallOpts, quorumNumber, index) } -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// StrategyParamsLength is a free data retrieval call binding the contract method 0x3ca5a5f5. // -// Solidity: function strategyManager() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function strategyParamsLength(uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistryCaller) StrategyParamsLength(opts *bind.CallOpts, quorumNumber uint8) (*big.Int, error) { var out []interface{} - err := _ContractStakeRegistry.contract.Call(opts, &out, "strategyManager") + err := _ContractStakeRegistry.contract.Call(opts, &out, "strategyParamsLength", quorumNumber) if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// StrategyParamsLength is a free data retrieval call binding the contract method 0x3ca5a5f5. // -// Solidity: function strategyManager() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategyManager() (common.Address, error) { - return _ContractStakeRegistry.Contract.StrategyManager(&_ContractStakeRegistry.CallOpts) +// Solidity: function strategyParamsLength(uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistrySession) StrategyParamsLength(quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.StrategyParamsLength(&_ContractStakeRegistry.CallOpts, quorumNumber) } -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// StrategyParamsLength is a free data retrieval call binding the contract method 0x3ca5a5f5. // -// Solidity: function strategyManager() view returns(address) -func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategyManager() (common.Address, error) { - return _ContractStakeRegistry.Contract.StrategyManager(&_ContractStakeRegistry.CallOpts) +// Solidity: function strategyParamsLength(uint8 quorumNumber) view returns(uint256) +func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) StrategyParamsLength(quorumNumber uint8) (*big.Int, error) { + return _ContractStakeRegistry.Contract.StrategyParamsLength(&_ContractStakeRegistry.CallOpts, quorumNumber) } // WeightOfOperatorForQuorum is a free data retrieval call binding the contract method 0x1f9b74e0. @@ -1066,46 +911,25 @@ func (_ContractStakeRegistry *ContractStakeRegistryCallerSession) WeightOfOperat return _ContractStakeRegistry.Contract.WeightOfOperatorForQuorum(&_ContractStakeRegistry.CallOpts, quorumNumber, operator) } -// AddStrategiesConsideredAndMultipliers is a paid mutator transaction binding the contract method 0xbba549fa. +// AddStrategies is a paid mutator transaction binding the contract method 0xc601527d. // -// Solidity: function addStrategiesConsideredAndMultipliers(uint8 quorumNumber, (address,uint96)[] _newStrategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactor) AddStrategiesConsideredAndMultipliers(opts *bind.TransactOpts, quorumNumber uint8, _newStrategiesConsideredAndMultipliers []IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.contract.Transact(opts, "addStrategiesConsideredAndMultipliers", quorumNumber, _newStrategiesConsideredAndMultipliers) +// Solidity: function addStrategies(uint8 quorumNumber, (address,uint96)[] _strategyParams) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactor) AddStrategies(opts *bind.TransactOpts, quorumNumber uint8, _strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractStakeRegistry.contract.Transact(opts, "addStrategies", quorumNumber, _strategyParams) } -// AddStrategiesConsideredAndMultipliers is a paid mutator transaction binding the contract method 0xbba549fa. +// AddStrategies is a paid mutator transaction binding the contract method 0xc601527d. // -// Solidity: function addStrategiesConsideredAndMultipliers(uint8 quorumNumber, (address,uint96)[] _newStrategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistrySession) AddStrategiesConsideredAndMultipliers(quorumNumber uint8, _newStrategiesConsideredAndMultipliers []IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.AddStrategiesConsideredAndMultipliers(&_ContractStakeRegistry.TransactOpts, quorumNumber, _newStrategiesConsideredAndMultipliers) +// Solidity: function addStrategies(uint8 quorumNumber, (address,uint96)[] _strategyParams) returns() +func (_ContractStakeRegistry *ContractStakeRegistrySession) AddStrategies(quorumNumber uint8, _strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.AddStrategies(&_ContractStakeRegistry.TransactOpts, quorumNumber, _strategyParams) } -// AddStrategiesConsideredAndMultipliers is a paid mutator transaction binding the contract method 0xbba549fa. +// AddStrategies is a paid mutator transaction binding the contract method 0xc601527d. // -// Solidity: function addStrategiesConsideredAndMultipliers(uint8 quorumNumber, (address,uint96)[] _newStrategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) AddStrategiesConsideredAndMultipliers(quorumNumber uint8, _newStrategiesConsideredAndMultipliers []IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.AddStrategiesConsideredAndMultipliers(&_ContractStakeRegistry.TransactOpts, quorumNumber, _newStrategiesConsideredAndMultipliers) -} - -// CreateQuorum is a paid mutator transaction binding the contract method 0x99eed4ee. -// -// Solidity: function createQuorum((address,uint96)[] _strategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactor) CreateQuorum(opts *bind.TransactOpts, _strategiesConsideredAndMultipliers []IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.contract.Transact(opts, "createQuorum", _strategiesConsideredAndMultipliers) -} - -// CreateQuorum is a paid mutator transaction binding the contract method 0x99eed4ee. -// -// Solidity: function createQuorum((address,uint96)[] _strategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistrySession) CreateQuorum(_strategiesConsideredAndMultipliers []IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.CreateQuorum(&_ContractStakeRegistry.TransactOpts, _strategiesConsideredAndMultipliers) -} - -// CreateQuorum is a paid mutator transaction binding the contract method 0x99eed4ee. -// -// Solidity: function createQuorum((address,uint96)[] _strategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) CreateQuorum(_strategiesConsideredAndMultipliers []IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.CreateQuorum(&_ContractStakeRegistry.TransactOpts, _strategiesConsideredAndMultipliers) +// Solidity: function addStrategies(uint8 quorumNumber, (address,uint96)[] _strategyParams) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) AddStrategies(quorumNumber uint8, _strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.AddStrategies(&_ContractStakeRegistry.TransactOpts, quorumNumber, _strategyParams) } // DeregisterOperator is a paid mutator transaction binding the contract method 0xbd29b8cd. @@ -1129,88 +953,88 @@ func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) Deregister return _ContractStakeRegistry.Contract.DeregisterOperator(&_ContractStakeRegistry.TransactOpts, operatorId, quorumNumbers) } -// Initialize is a paid mutator transaction binding the contract method 0x5f2948ec. +// InitializeQuorum is a paid mutator transaction binding the contract method 0xff694a77. // -// Solidity: function initialize(uint96[] _minimumStakeForQuorum, (address,uint96)[][] _quorumStrategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactor) Initialize(opts *bind.TransactOpts, _minimumStakeForQuorum []*big.Int, _quorumStrategiesConsideredAndMultipliers [][]IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.contract.Transact(opts, "initialize", _minimumStakeForQuorum, _quorumStrategiesConsideredAndMultipliers) +// Solidity: function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, (address,uint96)[] _strategyParams) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactor) InitializeQuorum(opts *bind.TransactOpts, quorumNumber uint8, minimumStake *big.Int, _strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractStakeRegistry.contract.Transact(opts, "initializeQuorum", quorumNumber, minimumStake, _strategyParams) } -// Initialize is a paid mutator transaction binding the contract method 0x5f2948ec. +// InitializeQuorum is a paid mutator transaction binding the contract method 0xff694a77. // -// Solidity: function initialize(uint96[] _minimumStakeForQuorum, (address,uint96)[][] _quorumStrategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistrySession) Initialize(_minimumStakeForQuorum []*big.Int, _quorumStrategiesConsideredAndMultipliers [][]IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.Initialize(&_ContractStakeRegistry.TransactOpts, _minimumStakeForQuorum, _quorumStrategiesConsideredAndMultipliers) +// Solidity: function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, (address,uint96)[] _strategyParams) returns() +func (_ContractStakeRegistry *ContractStakeRegistrySession) InitializeQuorum(quorumNumber uint8, minimumStake *big.Int, _strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.InitializeQuorum(&_ContractStakeRegistry.TransactOpts, quorumNumber, minimumStake, _strategyParams) } -// Initialize is a paid mutator transaction binding the contract method 0x5f2948ec. +// InitializeQuorum is a paid mutator transaction binding the contract method 0xff694a77. // -// Solidity: function initialize(uint96[] _minimumStakeForQuorum, (address,uint96)[][] _quorumStrategiesConsideredAndMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) Initialize(_minimumStakeForQuorum []*big.Int, _quorumStrategiesConsideredAndMultipliers [][]IVoteWeigherStrategyAndWeightingMultiplier) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.Initialize(&_ContractStakeRegistry.TransactOpts, _minimumStakeForQuorum, _quorumStrategiesConsideredAndMultipliers) +// Solidity: function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, (address,uint96)[] _strategyParams) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) InitializeQuorum(quorumNumber uint8, minimumStake *big.Int, _strategyParams []IStakeRegistryStrategyParams) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.InitializeQuorum(&_ContractStakeRegistry.TransactOpts, quorumNumber, minimumStake, _strategyParams) } -// ModifyStrategyWeights is a paid mutator transaction binding the contract method 0x2c2a5d2b. +// ModifyStrategyParams is a paid mutator transaction binding the contract method 0x20b66298. // -// Solidity: function modifyStrategyWeights(uint8 quorumNumber, uint256[] strategyIndices, uint96[] newMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactor) ModifyStrategyWeights(opts *bind.TransactOpts, quorumNumber uint8, strategyIndices []*big.Int, newMultipliers []*big.Int) (*types.Transaction, error) { - return _ContractStakeRegistry.contract.Transact(opts, "modifyStrategyWeights", quorumNumber, strategyIndices, newMultipliers) +// Solidity: function modifyStrategyParams(uint8 quorumNumber, uint256[] strategyIndices, uint96[] newMultipliers) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactor) ModifyStrategyParams(opts *bind.TransactOpts, quorumNumber uint8, strategyIndices []*big.Int, newMultipliers []*big.Int) (*types.Transaction, error) { + return _ContractStakeRegistry.contract.Transact(opts, "modifyStrategyParams", quorumNumber, strategyIndices, newMultipliers) } -// ModifyStrategyWeights is a paid mutator transaction binding the contract method 0x2c2a5d2b. +// ModifyStrategyParams is a paid mutator transaction binding the contract method 0x20b66298. // -// Solidity: function modifyStrategyWeights(uint8 quorumNumber, uint256[] strategyIndices, uint96[] newMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistrySession) ModifyStrategyWeights(quorumNumber uint8, strategyIndices []*big.Int, newMultipliers []*big.Int) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.ModifyStrategyWeights(&_ContractStakeRegistry.TransactOpts, quorumNumber, strategyIndices, newMultipliers) +// Solidity: function modifyStrategyParams(uint8 quorumNumber, uint256[] strategyIndices, uint96[] newMultipliers) returns() +func (_ContractStakeRegistry *ContractStakeRegistrySession) ModifyStrategyParams(quorumNumber uint8, strategyIndices []*big.Int, newMultipliers []*big.Int) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.ModifyStrategyParams(&_ContractStakeRegistry.TransactOpts, quorumNumber, strategyIndices, newMultipliers) } -// ModifyStrategyWeights is a paid mutator transaction binding the contract method 0x2c2a5d2b. +// ModifyStrategyParams is a paid mutator transaction binding the contract method 0x20b66298. // -// Solidity: function modifyStrategyWeights(uint8 quorumNumber, uint256[] strategyIndices, uint96[] newMultipliers) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) ModifyStrategyWeights(quorumNumber uint8, strategyIndices []*big.Int, newMultipliers []*big.Int) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.ModifyStrategyWeights(&_ContractStakeRegistry.TransactOpts, quorumNumber, strategyIndices, newMultipliers) +// Solidity: function modifyStrategyParams(uint8 quorumNumber, uint256[] strategyIndices, uint96[] newMultipliers) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) ModifyStrategyParams(quorumNumber uint8, strategyIndices []*big.Int, newMultipliers []*big.Int) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.ModifyStrategyParams(&_ContractStakeRegistry.TransactOpts, quorumNumber, strategyIndices, newMultipliers) } // RegisterOperator is a paid mutator transaction binding the contract method 0x25504777. // -// Solidity: function registerOperator(address operator, bytes32 operatorId, bytes quorumNumbers) returns() +// Solidity: function registerOperator(address operator, bytes32 operatorId, bytes quorumNumbers) returns(uint96[], uint96[]) func (_ContractStakeRegistry *ContractStakeRegistryTransactor) RegisterOperator(opts *bind.TransactOpts, operator common.Address, operatorId [32]byte, quorumNumbers []byte) (*types.Transaction, error) { return _ContractStakeRegistry.contract.Transact(opts, "registerOperator", operator, operatorId, quorumNumbers) } // RegisterOperator is a paid mutator transaction binding the contract method 0x25504777. // -// Solidity: function registerOperator(address operator, bytes32 operatorId, bytes quorumNumbers) returns() +// Solidity: function registerOperator(address operator, bytes32 operatorId, bytes quorumNumbers) returns(uint96[], uint96[]) func (_ContractStakeRegistry *ContractStakeRegistrySession) RegisterOperator(operator common.Address, operatorId [32]byte, quorumNumbers []byte) (*types.Transaction, error) { return _ContractStakeRegistry.Contract.RegisterOperator(&_ContractStakeRegistry.TransactOpts, operator, operatorId, quorumNumbers) } // RegisterOperator is a paid mutator transaction binding the contract method 0x25504777. // -// Solidity: function registerOperator(address operator, bytes32 operatorId, bytes quorumNumbers) returns() +// Solidity: function registerOperator(address operator, bytes32 operatorId, bytes quorumNumbers) returns(uint96[], uint96[]) func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) RegisterOperator(operator common.Address, operatorId [32]byte, quorumNumbers []byte) (*types.Transaction, error) { return _ContractStakeRegistry.Contract.RegisterOperator(&_ContractStakeRegistry.TransactOpts, operator, operatorId, quorumNumbers) } -// RemoveStrategiesConsideredAndMultipliers is a paid mutator transaction binding the contract method 0x2b3d8816. +// RemoveStrategies is a paid mutator transaction binding the contract method 0x5f1f2d77. // -// Solidity: function removeStrategiesConsideredAndMultipliers(uint8 quorumNumber, uint256[] indicesToRemove) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactor) RemoveStrategiesConsideredAndMultipliers(opts *bind.TransactOpts, quorumNumber uint8, indicesToRemove []*big.Int) (*types.Transaction, error) { - return _ContractStakeRegistry.contract.Transact(opts, "removeStrategiesConsideredAndMultipliers", quorumNumber, indicesToRemove) +// Solidity: function removeStrategies(uint8 quorumNumber, uint256[] indicesToRemove) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactor) RemoveStrategies(opts *bind.TransactOpts, quorumNumber uint8, indicesToRemove []*big.Int) (*types.Transaction, error) { + return _ContractStakeRegistry.contract.Transact(opts, "removeStrategies", quorumNumber, indicesToRemove) } -// RemoveStrategiesConsideredAndMultipliers is a paid mutator transaction binding the contract method 0x2b3d8816. +// RemoveStrategies is a paid mutator transaction binding the contract method 0x5f1f2d77. // -// Solidity: function removeStrategiesConsideredAndMultipliers(uint8 quorumNumber, uint256[] indicesToRemove) returns() -func (_ContractStakeRegistry *ContractStakeRegistrySession) RemoveStrategiesConsideredAndMultipliers(quorumNumber uint8, indicesToRemove []*big.Int) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.RemoveStrategiesConsideredAndMultipliers(&_ContractStakeRegistry.TransactOpts, quorumNumber, indicesToRemove) +// Solidity: function removeStrategies(uint8 quorumNumber, uint256[] indicesToRemove) returns() +func (_ContractStakeRegistry *ContractStakeRegistrySession) RemoveStrategies(quorumNumber uint8, indicesToRemove []*big.Int) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.RemoveStrategies(&_ContractStakeRegistry.TransactOpts, quorumNumber, indicesToRemove) } -// RemoveStrategiesConsideredAndMultipliers is a paid mutator transaction binding the contract method 0x2b3d8816. +// RemoveStrategies is a paid mutator transaction binding the contract method 0x5f1f2d77. // -// Solidity: function removeStrategiesConsideredAndMultipliers(uint8 quorumNumber, uint256[] indicesToRemove) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) RemoveStrategiesConsideredAndMultipliers(quorumNumber uint8, indicesToRemove []*big.Int) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.RemoveStrategiesConsideredAndMultipliers(&_ContractStakeRegistry.TransactOpts, quorumNumber, indicesToRemove) +// Solidity: function removeStrategies(uint8 quorumNumber, uint256[] indicesToRemove) returns() +func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) RemoveStrategies(quorumNumber uint8, indicesToRemove []*big.Int) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.RemoveStrategies(&_ContractStakeRegistry.TransactOpts, quorumNumber, indicesToRemove) } // SetMinimumStakeForQuorum is a paid mutator transaction binding the contract method 0xbc9a40c3. @@ -1234,159 +1058,25 @@ func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) SetMinimum return _ContractStakeRegistry.Contract.SetMinimumStakeForQuorum(&_ContractStakeRegistry.TransactOpts, quorumNumber, minimumStake) } -// UpdateStakes is a paid mutator transaction binding the contract method 0xce977ec3. -// -// Solidity: function updateStakes(address[] operators) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactor) UpdateStakes(opts *bind.TransactOpts, operators []common.Address) (*types.Transaction, error) { - return _ContractStakeRegistry.contract.Transact(opts, "updateStakes", operators) -} - -// UpdateStakes is a paid mutator transaction binding the contract method 0xce977ec3. -// -// Solidity: function updateStakes(address[] operators) returns() -func (_ContractStakeRegistry *ContractStakeRegistrySession) UpdateStakes(operators []common.Address) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.UpdateStakes(&_ContractStakeRegistry.TransactOpts, operators) -} - -// UpdateStakes is a paid mutator transaction binding the contract method 0xce977ec3. -// -// Solidity: function updateStakes(address[] operators) returns() -func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) UpdateStakes(operators []common.Address) (*types.Transaction, error) { - return _ContractStakeRegistry.Contract.UpdateStakes(&_ContractStakeRegistry.TransactOpts, operators) -} - -// ContractStakeRegistryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractStakeRegistry contract. -type ContractStakeRegistryInitializedIterator struct { - Event *ContractStakeRegistryInitialized // 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 *ContractStakeRegistryInitializedIterator) 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(ContractStakeRegistryInitialized) - 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(ContractStakeRegistryInitialized) - 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 *ContractStakeRegistryInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractStakeRegistryInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractStakeRegistryInitialized represents a Initialized event raised by the ContractStakeRegistry contract. -type ContractStakeRegistryInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// UpdateOperatorStake is a paid mutator transaction binding the contract method 0x66acfefe. // -// Solidity: event Initialized(uint8 version) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractStakeRegistryInitializedIterator, error) { - - logs, sub, err := _ContractStakeRegistry.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ContractStakeRegistryInitializedIterator{contract: _ContractStakeRegistry.contract, event: "Initialized", logs: logs, sub: sub}, nil +// Solidity: function updateOperatorStake(address operator, bytes32 operatorId, bytes quorumNumbers) returns(uint192) +func (_ContractStakeRegistry *ContractStakeRegistryTransactor) UpdateOperatorStake(opts *bind.TransactOpts, operator common.Address, operatorId [32]byte, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractStakeRegistry.contract.Transact(opts, "updateOperatorStake", operator, operatorId, quorumNumbers) } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// UpdateOperatorStake is a paid mutator transaction binding the contract method 0x66acfefe. // -// Solidity: event Initialized(uint8 version) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractStakeRegistryInitialized) (event.Subscription, error) { - - logs, sub, err := _ContractStakeRegistry.contract.WatchLogs(opts, "Initialized") - 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(ContractStakeRegistryInitialized) - if err := _ContractStakeRegistry.contract.UnpackLog(event, "Initialized", 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 +// Solidity: function updateOperatorStake(address operator, bytes32 operatorId, bytes quorumNumbers) returns(uint192) +func (_ContractStakeRegistry *ContractStakeRegistrySession) UpdateOperatorStake(operator common.Address, operatorId [32]byte, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.UpdateOperatorStake(&_ContractStakeRegistry.TransactOpts, operator, operatorId, quorumNumbers) } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// UpdateOperatorStake is a paid mutator transaction binding the contract method 0x66acfefe. // -// Solidity: event Initialized(uint8 version) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) ParseInitialized(log types.Log) (*ContractStakeRegistryInitialized, error) { - event := new(ContractStakeRegistryInitialized) - if err := _ContractStakeRegistry.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil +// Solidity: function updateOperatorStake(address operator, bytes32 operatorId, bytes quorumNumbers) returns(uint192) +func (_ContractStakeRegistry *ContractStakeRegistryTransactorSession) UpdateOperatorStake(operator common.Address, operatorId [32]byte, quorumNumbers []byte) (*types.Transaction, error) { + return _ContractStakeRegistry.Contract.UpdateOperatorStake(&_ContractStakeRegistry.TransactOpts, operator, operatorId, quorumNumbers) } // ContractStakeRegistryMinimumStakeForQuorumUpdatedIterator is returned from FilterMinimumStakeForQuorumUpdated and is used to iterate over the raw logs and unpacked data for MinimumStakeForQuorumUpdated events raised by the ContractStakeRegistry contract. @@ -1534,9 +1224,9 @@ func (_ContractStakeRegistry *ContractStakeRegistryFilterer) ParseMinimumStakeFo return event, nil } -// ContractStakeRegistryQuorumCreatedIterator is returned from FilterQuorumCreated and is used to iterate over the raw logs and unpacked data for QuorumCreated events raised by the ContractStakeRegistry contract. -type ContractStakeRegistryQuorumCreatedIterator struct { - Event *ContractStakeRegistryQuorumCreated // Event containing the contract specifics and raw log +// ContractStakeRegistryOperatorStakeUpdateIterator is returned from FilterOperatorStakeUpdate and is used to iterate over the raw logs and unpacked data for OperatorStakeUpdate events raised by the ContractStakeRegistry contract. +type ContractStakeRegistryOperatorStakeUpdateIterator struct { + Event *ContractStakeRegistryOperatorStakeUpdate // 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 @@ -1550,7 +1240,7 @@ type ContractStakeRegistryQuorumCreatedIterator struct { // 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 *ContractStakeRegistryQuorumCreatedIterator) Next() bool { +func (it *ContractStakeRegistryOperatorStakeUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1559,7 +1249,7 @@ func (it *ContractStakeRegistryQuorumCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractStakeRegistryQuorumCreated) + it.Event = new(ContractStakeRegistryOperatorStakeUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1574,7 +1264,7 @@ func (it *ContractStakeRegistryQuorumCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractStakeRegistryQuorumCreated) + it.Event = new(ContractStakeRegistryOperatorStakeUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1590,51 +1280,53 @@ func (it *ContractStakeRegistryQuorumCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractStakeRegistryQuorumCreatedIterator) Error() error { +func (it *ContractStakeRegistryOperatorStakeUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractStakeRegistryQuorumCreatedIterator) Close() error { +func (it *ContractStakeRegistryOperatorStakeUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractStakeRegistryQuorumCreated represents a QuorumCreated event raised by the ContractStakeRegistry contract. -type ContractStakeRegistryQuorumCreated struct { +// ContractStakeRegistryOperatorStakeUpdate represents a OperatorStakeUpdate event raised by the ContractStakeRegistry contract. +type ContractStakeRegistryOperatorStakeUpdate struct { + OperatorId [32]byte QuorumNumber uint8 + Stake *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterQuorumCreated is a free log retrieval operation binding the contract event 0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4. +// FilterOperatorStakeUpdate is a free log retrieval operation binding the contract event 0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d. // -// Solidity: event QuorumCreated(uint8 indexed quorumNumber) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) FilterQuorumCreated(opts *bind.FilterOpts, quorumNumber []uint8) (*ContractStakeRegistryQuorumCreatedIterator, error) { +// Solidity: event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake) +func (_ContractStakeRegistry *ContractStakeRegistryFilterer) FilterOperatorStakeUpdate(opts *bind.FilterOpts, operatorId [][32]byte) (*ContractStakeRegistryOperatorStakeUpdateIterator, error) { - var quorumNumberRule []interface{} - for _, quorumNumberItem := range quorumNumber { - quorumNumberRule = append(quorumNumberRule, quorumNumberItem) + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) } - logs, sub, err := _ContractStakeRegistry.contract.FilterLogs(opts, "QuorumCreated", quorumNumberRule) + logs, sub, err := _ContractStakeRegistry.contract.FilterLogs(opts, "OperatorStakeUpdate", operatorIdRule) if err != nil { return nil, err } - return &ContractStakeRegistryQuorumCreatedIterator{contract: _ContractStakeRegistry.contract, event: "QuorumCreated", logs: logs, sub: sub}, nil + return &ContractStakeRegistryOperatorStakeUpdateIterator{contract: _ContractStakeRegistry.contract, event: "OperatorStakeUpdate", logs: logs, sub: sub}, nil } -// WatchQuorumCreated is a free log subscription operation binding the contract event 0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4. +// WatchOperatorStakeUpdate is a free log subscription operation binding the contract event 0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d. // -// Solidity: event QuorumCreated(uint8 indexed quorumNumber) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchQuorumCreated(opts *bind.WatchOpts, sink chan<- *ContractStakeRegistryQuorumCreated, quorumNumber []uint8) (event.Subscription, error) { +// Solidity: event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake) +func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchOperatorStakeUpdate(opts *bind.WatchOpts, sink chan<- *ContractStakeRegistryOperatorStakeUpdate, operatorId [][32]byte) (event.Subscription, error) { - var quorumNumberRule []interface{} - for _, quorumNumberItem := range quorumNumber { - quorumNumberRule = append(quorumNumberRule, quorumNumberItem) + var operatorIdRule []interface{} + for _, operatorIdItem := range operatorId { + operatorIdRule = append(operatorIdRule, operatorIdItem) } - logs, sub, err := _ContractStakeRegistry.contract.WatchLogs(opts, "QuorumCreated", quorumNumberRule) + logs, sub, err := _ContractStakeRegistry.contract.WatchLogs(opts, "OperatorStakeUpdate", operatorIdRule) if err != nil { return nil, err } @@ -1644,8 +1336,8 @@ func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchQuorumCreated( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractStakeRegistryQuorumCreated) - if err := _ContractStakeRegistry.contract.UnpackLog(event, "QuorumCreated", log); err != nil { + event := new(ContractStakeRegistryOperatorStakeUpdate) + if err := _ContractStakeRegistry.contract.UnpackLog(event, "OperatorStakeUpdate", log); err != nil { return err } event.Raw = log @@ -1666,21 +1358,21 @@ func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchQuorumCreated( }), nil } -// ParseQuorumCreated is a log parse operation binding the contract event 0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4. +// ParseOperatorStakeUpdate is a log parse operation binding the contract event 0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d. // -// Solidity: event QuorumCreated(uint8 indexed quorumNumber) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) ParseQuorumCreated(log types.Log) (*ContractStakeRegistryQuorumCreated, error) { - event := new(ContractStakeRegistryQuorumCreated) - if err := _ContractStakeRegistry.contract.UnpackLog(event, "QuorumCreated", log); err != nil { +// Solidity: event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake) +func (_ContractStakeRegistry *ContractStakeRegistryFilterer) ParseOperatorStakeUpdate(log types.Log) (*ContractStakeRegistryOperatorStakeUpdate, error) { + event := new(ContractStakeRegistryOperatorStakeUpdate) + if err := _ContractStakeRegistry.contract.UnpackLog(event, "OperatorStakeUpdate", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractStakeRegistryStakeUpdateIterator is returned from FilterStakeUpdate and is used to iterate over the raw logs and unpacked data for StakeUpdate events raised by the ContractStakeRegistry contract. -type ContractStakeRegistryStakeUpdateIterator struct { - Event *ContractStakeRegistryStakeUpdate // Event containing the contract specifics and raw log +// ContractStakeRegistryQuorumCreatedIterator is returned from FilterQuorumCreated and is used to iterate over the raw logs and unpacked data for QuorumCreated events raised by the ContractStakeRegistry contract. +type ContractStakeRegistryQuorumCreatedIterator struct { + Event *ContractStakeRegistryQuorumCreated // 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 @@ -1694,7 +1386,7 @@ type ContractStakeRegistryStakeUpdateIterator struct { // 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 *ContractStakeRegistryStakeUpdateIterator) Next() bool { +func (it *ContractStakeRegistryQuorumCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1703,7 +1395,7 @@ func (it *ContractStakeRegistryStakeUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractStakeRegistryStakeUpdate) + it.Event = new(ContractStakeRegistryQuorumCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1718,7 +1410,7 @@ func (it *ContractStakeRegistryStakeUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractStakeRegistryStakeUpdate) + it.Event = new(ContractStakeRegistryQuorumCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1734,53 +1426,51 @@ func (it *ContractStakeRegistryStakeUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractStakeRegistryStakeUpdateIterator) Error() error { +func (it *ContractStakeRegistryQuorumCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractStakeRegistryStakeUpdateIterator) Close() error { +func (it *ContractStakeRegistryQuorumCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractStakeRegistryStakeUpdate represents a StakeUpdate event raised by the ContractStakeRegistry contract. -type ContractStakeRegistryStakeUpdate struct { - OperatorId [32]byte +// ContractStakeRegistryQuorumCreated represents a QuorumCreated event raised by the ContractStakeRegistry contract. +type ContractStakeRegistryQuorumCreated struct { QuorumNumber uint8 - Stake *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterStakeUpdate is a free log retrieval operation binding the contract event 0xe7c60c52692f0e0ff8d1c289ffe63cb02e79373f35e3000cafe7cca898885934. +// FilterQuorumCreated is a free log retrieval operation binding the contract event 0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4. // -// Solidity: event StakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) FilterStakeUpdate(opts *bind.FilterOpts, operatorId [][32]byte) (*ContractStakeRegistryStakeUpdateIterator, error) { +// Solidity: event QuorumCreated(uint8 indexed quorumNumber) +func (_ContractStakeRegistry *ContractStakeRegistryFilterer) FilterQuorumCreated(opts *bind.FilterOpts, quorumNumber []uint8) (*ContractStakeRegistryQuorumCreatedIterator, error) { - var operatorIdRule []interface{} - for _, operatorIdItem := range operatorId { - operatorIdRule = append(operatorIdRule, operatorIdItem) + var quorumNumberRule []interface{} + for _, quorumNumberItem := range quorumNumber { + quorumNumberRule = append(quorumNumberRule, quorumNumberItem) } - logs, sub, err := _ContractStakeRegistry.contract.FilterLogs(opts, "StakeUpdate", operatorIdRule) + logs, sub, err := _ContractStakeRegistry.contract.FilterLogs(opts, "QuorumCreated", quorumNumberRule) if err != nil { return nil, err } - return &ContractStakeRegistryStakeUpdateIterator{contract: _ContractStakeRegistry.contract, event: "StakeUpdate", logs: logs, sub: sub}, nil + return &ContractStakeRegistryQuorumCreatedIterator{contract: _ContractStakeRegistry.contract, event: "QuorumCreated", logs: logs, sub: sub}, nil } -// WatchStakeUpdate is a free log subscription operation binding the contract event 0xe7c60c52692f0e0ff8d1c289ffe63cb02e79373f35e3000cafe7cca898885934. +// WatchQuorumCreated is a free log subscription operation binding the contract event 0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4. // -// Solidity: event StakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchStakeUpdate(opts *bind.WatchOpts, sink chan<- *ContractStakeRegistryStakeUpdate, operatorId [][32]byte) (event.Subscription, error) { +// Solidity: event QuorumCreated(uint8 indexed quorumNumber) +func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchQuorumCreated(opts *bind.WatchOpts, sink chan<- *ContractStakeRegistryQuorumCreated, quorumNumber []uint8) (event.Subscription, error) { - var operatorIdRule []interface{} - for _, operatorIdItem := range operatorId { - operatorIdRule = append(operatorIdRule, operatorIdItem) + var quorumNumberRule []interface{} + for _, quorumNumberItem := range quorumNumber { + quorumNumberRule = append(quorumNumberRule, quorumNumberItem) } - logs, sub, err := _ContractStakeRegistry.contract.WatchLogs(opts, "StakeUpdate", operatorIdRule) + logs, sub, err := _ContractStakeRegistry.contract.WatchLogs(opts, "QuorumCreated", quorumNumberRule) if err != nil { return nil, err } @@ -1790,8 +1480,8 @@ func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchStakeUpdate(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractStakeRegistryStakeUpdate) - if err := _ContractStakeRegistry.contract.UnpackLog(event, "StakeUpdate", log); err != nil { + event := new(ContractStakeRegistryQuorumCreated) + if err := _ContractStakeRegistry.contract.UnpackLog(event, "QuorumCreated", log); err != nil { return err } event.Raw = log @@ -1812,12 +1502,12 @@ func (_ContractStakeRegistry *ContractStakeRegistryFilterer) WatchStakeUpdate(op }), nil } -// ParseStakeUpdate is a log parse operation binding the contract event 0xe7c60c52692f0e0ff8d1c289ffe63cb02e79373f35e3000cafe7cca898885934. +// ParseQuorumCreated is a log parse operation binding the contract event 0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4. // -// Solidity: event StakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake) -func (_ContractStakeRegistry *ContractStakeRegistryFilterer) ParseStakeUpdate(log types.Log) (*ContractStakeRegistryStakeUpdate, error) { - event := new(ContractStakeRegistryStakeUpdate) - if err := _ContractStakeRegistry.contract.UnpackLog(event, "StakeUpdate", log); err != nil { +// Solidity: event QuorumCreated(uint8 indexed quorumNumber) +func (_ContractStakeRegistry *ContractStakeRegistryFilterer) ParseQuorumCreated(log types.Log) (*ContractStakeRegistryQuorumCreated, error) { + event := new(ContractStakeRegistryQuorumCreated) + if err := _ContractStakeRegistry.contract.UnpackLog(event, "QuorumCreated", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/compile.sh b/contracts/compile.sh index 8ad6d9c00..7ad6afd6f 100755 --- a/contracts/compile.sh +++ b/contracts/compile.sh @@ -21,7 +21,7 @@ function create_binding { forge clean forge build -contracts="BitmapUtils BLSOperatorStateRetriever BN254 BLSRegistryCoordinatorWithIndices BLSPublicKeyCompendium BLSPubkeyRegistry IBLSPubkeyRegistry IndexRegistry StakeRegistry EigenDAServiceManager IEigenDAServiceManager MockRollup" +contracts="DelegationManager BitmapUtils OperatorStateRetriever RegistryCoordinator BLSApkRegistry IndexRegistry StakeRegistry BN254 EigenDAServiceManager IEigenDAServiceManager MockRollup" for contract in $contracts; do create_binding ./ $contract ./bindings done diff --git a/contracts/script/EigenDADeployer.s.sol b/contracts/script/EigenDADeployer.s.sol index dfbb51d9b..5f64b7d91 100644 --- a/contracts/script/EigenDADeployer.s.sol +++ b/contracts/script/EigenDADeployer.s.sol @@ -53,6 +53,7 @@ contract EigenDADeployer is DeployOpenEigenLayer { address eigenDAPauser; address churner; address ejector; + address confirmer; } function _deployEigenDAAndEigenLayerContracts( diff --git a/contracts/script/SetUpEigenDA.s.sol b/contracts/script/SetUpEigenDA.s.sol index d6568b81b..fe9ca71de 100644 --- a/contracts/script/SetUpEigenDA.s.sol +++ b/contracts/script/SetUpEigenDA.s.sol @@ -45,6 +45,7 @@ contract SetupEigenDA is EigenDADeployer, EigenLayerUtils { addressConfig.eigenDAPauser = msg.sender; addressConfig.churner = msg.sender; addressConfig.ejector = msg.sender; + addressConfig.confirmer = msg.sender; uint256 initialSupply = 1000 ether; address tokenOwner = msg.sender; @@ -65,6 +66,9 @@ contract SetupEigenDA is EigenDADeployer, EigenLayerUtils { maxOperatorCount = stdJson.readUint(config_data, ".maxOperatorCount"); } + + addressConfig.confirmer = vm.addr(stdJson.readUint(config_data, ".confirmerPrivateKey")); + vm.startBroadcast(); @@ -75,6 +79,8 @@ contract SetupEigenDA is EigenDADeployer, EigenLayerUtils { tokenOwner, maxOperatorCount ); + + eigenDAServiceManager.setBatchConfirmer(addressConfig.confirmer); vm.stopBroadcast(); } @@ -169,9 +175,9 @@ contract SetupEigenDA is EigenDADeployer, EigenLayerUtils { string memory output = "eigenDA deployment output"; vm.serializeAddress(output, "eigenDAServiceManager", address(eigenDAServiceManager)); - vm.serializeAddress(output, "blsOperatorStateRetriever", address(operatorStateRetriever)); + vm.serializeAddress(output, "operatorStateRetriever", address(operatorStateRetriever)); vm.serializeAddress(output, "blsApkRegistry" , address(apkRegistry)); - vm.serializeAddress(output, "blsRegistryCoordinatorWithIndices", address(registryCoordinator)); + vm.serializeAddress(output, "registryCoordinator", address(registryCoordinator)); string memory finalJson = vm.serializeString(output, "object", output); diff --git a/inabox/Makefile b/inabox/Makefile index 9caab4d99..637453177 100644 --- a/inabox/Makefile +++ b/inabox/Makefile @@ -19,6 +19,11 @@ new-anvil: mkdir -p "testdata/$(dt)" cp ./templates/testconfig-anvil.yaml "testdata/$(dt)/config.yaml" +new-anvil-nochurner: + mkdir -p "testdata/$(dt)" + cp ./templates/testconfig-anvil-nochurner.yaml "testdata/$(dt)/config.yaml" + + new-docker-anvil: mkdir -p "testdata/$(dt)" cp ./templates/testconfig-anvil-docker.yaml "testdata/$(dt)/config.yaml" diff --git a/inabox/deploy/config_types.go b/inabox/deploy/config_types.go index 03b4cde42..347a2174f 100644 --- a/inabox/deploy/config_types.go +++ b/inabox/deploy/config_types.go @@ -53,6 +53,7 @@ type EigenDADeployConfig struct { NumStrategies int `json:"numStrategies"` MaxOperatorCount int `json:"maxOperatorCount"` StakerPrivateKeys []string `json:"stakerPrivateKeys"` + ConfirmerPrivateKey string `json:"confirmerPrivateKey"` StakerTokenAmounts [][]string `json:"-"` OperatorPrivateKeys []string `json:"-"` } @@ -79,10 +80,11 @@ func (cfg *EigenDADeployConfig) MarshalJSON() ([]byte, error) { // Marshal the remaining fields remainingFields := map[string]interface{}{ - "useDefaults": cfg.UseDefaults, - "numStrategies": cfg.NumStrategies, - "maxOperatorCount": cfg.MaxOperatorCount, - "stakerPrivateKeys": cfg.StakerPrivateKeys, + "useDefaults": cfg.UseDefaults, + "numStrategies": cfg.NumStrategies, + "maxOperatorCount": cfg.MaxOperatorCount, + "stakerPrivateKeys": cfg.StakerPrivateKeys, + "confirmerPrivateKey": cfg.ConfirmerPrivateKey, } remainingJSON, err := json.Marshal(remainingFields) @@ -96,12 +98,11 @@ func (cfg *EigenDADeployConfig) MarshalJSON() ([]byte, error) { } type EigenDAContract struct { - Deployer string `yaml:"deployer"` - ServiceManager string `json:"eigenDAServiceManager"` - OperatorStateRetreiver string `json:"blsOperatorStateRetriever"` - PubkeyRegistry string `json:"blsPubkeyRegistry"` - PubkeyCompendium string `json:"pubkeyCompendium"` - RegistryCoordinatorWithIndices string `json:"blsRegistryCoordinatorWithIndices"` + Deployer string `yaml:"deployer"` + ServiceManager string `json:"eigenDAServiceManager"` + OperatorStateRetreiver string `json:"operatorStateRetriever"` + BlsApkRegistry string `json:"blsApkRegistry"` + RegistryCoordinator string `json:"registryCoordinator"` } type ServicesSpec struct { diff --git a/inabox/deploy/deploy.go b/inabox/deploy/deploy.go index 1d3d9dc30..3271a6655 100644 --- a/inabox/deploy/deploy.go +++ b/inabox/deploy/deploy.go @@ -66,6 +66,7 @@ func (env *Config) generateEigenDADeployConfig() EigenDADeployConfig { StakerPrivateKeys: stakers, StakerTokenAmounts: stakes, OperatorPrivateKeys: operators, + ConfirmerPrivateKey: env.getKeyString("batcher0"), } return config @@ -219,7 +220,7 @@ func (env *Config) RunNodePluginBinary(operation string, operator OperatorVars) "NODE_CHURNER_URL=" + operator.NODE_CHURNER_URL, "NODE_NUM_CONFIRMATIONS=0", } - + err := execCmd("./node-plugin.sh", []string{}, envVars) if err != nil { diff --git a/inabox/deploy/subgraph.go b/inabox/deploy/subgraph.go index 5e89e6fa8..f0b417960 100644 --- a/inabox/deploy/subgraph.go +++ b/inabox/deploy/subgraph.go @@ -73,35 +73,30 @@ type eigenDAOperatorStateSubgraphUpdater struct { } func (u eigenDAOperatorStateSubgraphUpdater) UpdateSubgraph(s *Subgraph, startBlock int) { - s.DataSources[0].Source.Address = strings.TrimPrefix(u.c.EigenDA.RegistryCoordinatorWithIndices, "0x") + s.DataSources[0].Source.Address = strings.TrimPrefix(u.c.EigenDA.RegistryCoordinator, "0x") s.DataSources[0].Source.StartBlock = startBlock - s.DataSources[1].Source.Address = strings.TrimPrefix(u.c.EigenDA.PubkeyRegistry, "0x") + s.DataSources[1].Source.Address = strings.TrimPrefix(u.c.EigenDA.BlsApkRegistry, "0x") s.DataSources[1].Source.StartBlock = startBlock - s.DataSources[2].Source.Address = strings.TrimPrefix(u.c.EigenDA.PubkeyCompendium, "0x") + s.DataSources[2].Source.Address = strings.TrimPrefix(u.c.EigenDA.BlsApkRegistry, "0x") s.DataSources[2].Source.StartBlock = startBlock - s.DataSources[3].Source.Address = strings.TrimPrefix(u.c.EigenDA.PubkeyCompendium, "0x") + s.DataSources[3].Source.Address = strings.TrimPrefix(u.c.EigenDA.RegistryCoordinator, "0x") s.DataSources[3].Source.StartBlock = startBlock - s.DataSources[4].Source.Address = strings.TrimPrefix(u.c.EigenDA.RegistryCoordinatorWithIndices, "0x") + s.DataSources[4].Source.Address = strings.TrimPrefix(u.c.EigenDA.BlsApkRegistry, "0x") s.DataSources[4].Source.StartBlock = startBlock - s.DataSources[5].Source.Address = strings.TrimPrefix(u.c.EigenDA.PubkeyRegistry, "0x") - s.DataSources[5].Source.StartBlock = startBlock } func (u eigenDAOperatorStateSubgraphUpdater) UpdateNetworks(n Networks, startBlock int) { - n["devnet"]["BLSRegistryCoordinatorWithIndices"]["address"] = u.c.EigenDA.RegistryCoordinatorWithIndices - n["devnet"]["BLSRegistryCoordinatorWithIndices"]["startBlock"] = startBlock - n["devnet"]["BLSRegistryCoordinatorWithIndices_Operator"]["address"] = u.c.EigenDA.RegistryCoordinatorWithIndices - n["devnet"]["BLSRegistryCoordinatorWithIndices_Operator"]["startBlock"] = startBlock - - n["devnet"]["BLSPubkeyRegistry"]["address"] = u.c.EigenDA.PubkeyRegistry - n["devnet"]["BLSPubkeyRegistry"]["startBlock"] = startBlock - n["devnet"]["BLSPubkeyRegistry_QuorumApkUpdates"]["address"] = u.c.EigenDA.PubkeyRegistry - n["devnet"]["BLSPubkeyRegistry_QuorumApkUpdates"]["startBlock"] = startBlock - - n["devnet"]["BLSPubkeyCompendium"]["address"] = u.c.EigenDA.PubkeyCompendium - n["devnet"]["BLSPubkeyCompendium"]["startBlock"] = startBlock - n["devnet"]["BLSPubkeyCompendium_Operator"]["address"] = u.c.EigenDA.PubkeyCompendium - n["devnet"]["BLSPubkeyCompendium_Operator"]["startBlock"] = startBlock + n["devnet"]["RegistryCoordinator"]["address"] = u.c.EigenDA.RegistryCoordinator + n["devnet"]["RegistryCoordinator"]["startBlock"] = startBlock + n["devnet"]["RegistryCoordinator_Operator"]["address"] = u.c.EigenDA.RegistryCoordinator + n["devnet"]["RegistryCoordinator_Operator"]["startBlock"] = startBlock + + n["devnet"]["BLSApkRegistry"]["address"] = u.c.EigenDA.BlsApkRegistry + n["devnet"]["BLSApkRegistry"]["startBlock"] = startBlock + n["devnet"]["BLSApkRegistry_Operator"]["address"] = u.c.EigenDA.BlsApkRegistry + n["devnet"]["BLSApkRegistry_Operator"]["startBlock"] = startBlock + n["devnet"]["BLSApkRegistry_QuorumApkUpdates"]["address"] = u.c.EigenDA.BlsApkRegistry + n["devnet"]["BLSApkRegistry_QuorumApkUpdates"]["startBlock"] = startBlock } type eigenDAUIMonitoringUpdater struct { diff --git a/inabox/tests/integration_test.go b/inabox/tests/integration_test.go index cb6a9b97e..57be87ba7 100644 --- a/inabox/tests/integration_test.go +++ b/inabox/tests/integration_test.go @@ -148,7 +148,7 @@ func blobHeaderFromProto(blobHeader *disperserpb.BlobHeader) rollupbindings.IEig } } -func blobVerificationProofFromProto(verificationProof *disperserpb.BlobVerificationProof) rollupbindings.EigenDABlobUtilsBlobVerificationProof { +func blobVerificationProofFromProto(verificationProof *disperserpb.BlobVerificationProof) rollupbindings.EigenDARollupUtilsBlobVerificationProof { batchMetadataProto := verificationProof.GetBatchMetadata() batchHeaderProto := verificationProof.GetBatchMetadata().GetBatchHeader() var batchRoot [32]byte @@ -168,7 +168,7 @@ func blobVerificationProofFromProto(verificationProof *disperserpb.BlobVerificat Fee: fee, ConfirmationBlockNumber: batchMetadataProto.GetConfirmationBlockNumber(), } - return rollupbindings.EigenDABlobUtilsBlobVerificationProof{ + return rollupbindings.EigenDARollupUtilsBlobVerificationProof{ BatchId: verificationProof.GetBatchId(), BlobIndex: uint8(verificationProof.GetBlobIndex()), BatchMetadata: batchMetadata,