diff --git a/Makefile b/Makefile index 178dfb68..6b5f81ee 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ lint: ## runs all linters ___BINDINGS___: ## -core_default := "DelegationManager IRewardsCoordinator StrategyManager EigenPod EigenPodManager IStrategy AVSDirectory AllocationManager" +core_default := "DelegationManager IRewardsCoordinator StrategyManager EigenPod EigenPodManager IStrategy AVSDirectory AllocationManager PermissionController" core_location := "./lib/eigenlayer-middleware/lib/eigenlayer-contracts" core_bindings_location := "../../../../bindings" diff --git a/chainio/clients/elcontracts/types.go b/chainio/clients/elcontracts/types.go index 56dcf941..6526045b 100644 --- a/chainio/clients/elcontracts/types.go +++ b/chainio/clients/elcontracts/types.go @@ -35,7 +35,8 @@ type DeregistrationRequest struct { } type RegistrationRequest struct { - AVSAddress common.Address - OperatorSetIds []uint32 - WaitForReceipt bool + OperatorAddress common.Address + AVSAddress common.Address + OperatorSetIds []uint32 + WaitForReceipt bool } diff --git a/chainio/clients/elcontracts/writer.go b/chainio/clients/elcontracts/writer.go index f6f49a52..c35c45ee 100644 --- a/chainio/clients/elcontracts/writer.go +++ b/chainio/clients/elcontracts/writer.go @@ -164,15 +164,6 @@ func (w *ChainWriter) RegisterAsOperator( } w.logger.Infof("registering operator %s to EigenLayer", operator.Address) - opDetails := delegationmanager.IDelegationManagerTypesOperatorDetails{ - // Earning receiver has been deprecated, so we just use the operator address as a dummy value - // Any reward related setup is via RewardsCoordinator contract - DeprecatedEarningsReceiver: gethcommon.HexToAddress(operator.Address), - // DeprecatedStakerOptOutWindowBlocks has been deprecated, so we just use the operator's - // StakerOptOutWindowBlocks - DeprecatedStakerOptOutWindowBlocks: operator.StakerOptOutWindowBlocks, - DelegationApprover: gethcommon.HexToAddress(operator.DelegationApproverAddress), - } noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() if err != nil { @@ -180,7 +171,7 @@ func (w *ChainWriter) RegisterAsOperator( } tx, err := w.delegationManager.RegisterAsOperator( noSendTxOpts, - opDetails, + gethcommon.HexToAddress(operator.DelegationApproverAddress), operator.AllocationDelay, operator.MetadataUrl, ) @@ -206,22 +197,17 @@ func (w *ChainWriter) UpdateOperatorDetails( } w.logger.Infof("updating operator details of operator %s to EigenLayer", operator.Address) - opDetails := delegationmanager.IDelegationManagerTypesOperatorDetails{ - // Earning receiver has been deprecated, so we just use the operator address as a dummy value - // Any reward related setup is via RewardsCoordinator contract - DeprecatedEarningsReceiver: gethcommon.HexToAddress(operator.Address), - DelegationApprover: gethcommon.HexToAddress(operator.DelegationApproverAddress), - // DeprecatedStakerOptOutWindowBlocks has been deprecated, so we just use the operator's - // StakerOptOutWindowBlocks - DeprecatedStakerOptOutWindowBlocks: operator.StakerOptOutWindowBlocks, - } noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() if err != nil { return nil, err } - tx, err := w.delegationManager.ModifyOperatorDetails(noSendTxOpts, opDetails) + tx, err := w.delegationManager.ModifyOperatorDetails( + noSendTxOpts, + gethcommon.HexToAddress(operator.Address), + gethcommon.HexToAddress(operator.DelegationApproverAddress), + ) if err != nil { return nil, err } @@ -240,7 +226,11 @@ func (w *ChainWriter) UpdateOperatorDetails( return receipt, nil } -func (w *ChainWriter) UpdateMetadataURI(ctx context.Context, uri string, waitForReceipt bool, +func (w *ChainWriter) UpdateMetadataURI( + ctx context.Context, + operatorAddress gethcommon.Address, + uri string, + waitForReceipt bool, ) (*gethtypes.Receipt, error) { if w.delegationManager == nil { return nil, errors.New("DelegationManager contract not provided") @@ -251,7 +241,7 @@ func (w *ChainWriter) UpdateMetadataURI(ctx context.Context, uri string, waitFor return nil, err } - tx, err := w.delegationManager.UpdateOperatorMetadataURI(noSendTxOpts, uri) + tx, err := w.delegationManager.UpdateOperatorMetadataURI(noSendTxOpts, operatorAddress, uri) if err != nil { return nil, err } @@ -368,7 +358,7 @@ func (w *ChainWriter) ProcessClaim( func (w *ChainWriter) ProcessClaims( ctx context.Context, - claims []rewardscoordinator.IRewardsCoordinatorRewardsMerkleClaim, + claims []rewardscoordinator.IRewardsCoordinatorTypesRewardsMerkleClaim, earnerAddress gethcommon.Address, waitForReceipt bool, ) (*gethtypes.Receipt, error) { @@ -436,6 +426,7 @@ func (w *ChainWriter) ForceDeregisterFromOperatorSets( func (w *ChainWriter) ModifyAllocations( ctx context.Context, + operatorAddress gethcommon.Address, allocations []allocationmanager.IAllocationManagerTypesAllocateParams, waitForReceipt bool, ) (*gethtypes.Receipt, error) { @@ -448,7 +439,7 @@ func (w *ChainWriter) ModifyAllocations( return nil, utils.WrapError("failed to get no send tx opts", err) } - tx, err := w.allocationManager.ModifyAllocations(noSendTxOpts, allocations) + tx, err := w.allocationManager.ModifyAllocations(noSendTxOpts, operatorAddress, allocations) if err != nil { return nil, utils.WrapError("failed to create ModifyAllocations tx", err) } @@ -463,6 +454,7 @@ func (w *ChainWriter) ModifyAllocations( func (w *ChainWriter) SetAllocationDelay( ctx context.Context, + operatorAddress gethcommon.Address, delay uint32, waitForReceipt bool, ) (*gethtypes.Receipt, error) { @@ -475,7 +467,7 @@ func (w *ChainWriter) SetAllocationDelay( return nil, utils.WrapError("failed to get no send tx opts", err) } - tx, err := w.allocationManager.SetAllocationDelay0(noSendTxOpts, delay) + tx, err := w.allocationManager.SetAllocationDelay(noSendTxOpts, operatorAddress, delay) if err != nil { return nil, utils.WrapError("failed to create InitializeAllocationDelay tx", err) } @@ -535,6 +527,7 @@ func (w *ChainWriter) RegisterForOperatorSets( tx, err := w.allocationManager.RegisterForOperatorSets( noSendTxOpts, + request.OperatorAddress, allocationmanager.IAllocationManagerTypesRegisterParams{ Avs: request.AVSAddress, OperatorSetIds: request.OperatorSetIds, diff --git a/contracts/bindings/AVSDirectory/binding.go b/contracts/bindings/AVSDirectory/binding.go index 3532ed27..60d86027 100644 --- a/contracts/bindings/AVSDirectory/binding.go +++ b/contracts/bindings/AVSDirectory/binding.go @@ -39,7 +39,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // ContractAVSDirectoryMetaData contains all meta data concerning the ContractAVSDirectory contract. var ContractAVSDirectoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"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\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"isSpent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"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\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorAlreadyRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToEigenLayer\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]}]", - Bin: "0x61010060405234801561001157600080fd5b506040516117c13803806117c18339810160408190526100309161020a565b81816001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610077610089565b60e052610082610133565b5050610244565b600060c051461461012c5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b5060e05190565b600054610100900460ff161561019f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101f0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461020757600080fd5b50565b6000806040838503121561021d57600080fd5b8251610228816101f2565b6020840151909250610239816101f2565b809150509250929050565b60805160a05160c05160e0516115286102996000396000610e4201526000610d82015260008181610348015261064f015260008181610224015281816103e1015281816104b80152610ae701526115286000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a364f4da116100b8578063dce974b91161007c578063dce974b91461031c578063df5cf72314610343578063ec76f4421461036a578063f2fde38b1461039e578063f698da25146103b1578063fabc1cbc146103b957600080fd5b8063a364f4da14610295578063a98fb355146102a8578063c825fe68146102bb578063cd6dc687146102e2578063d79aceab146102f557600080fd5b80635c975abb1161010a5780635c975abb14610205578063715018a614610217578063886f11951461021f5780638da5cb5b1461025e5780639926ee7d1461026f578063a1060c881461028257600080fd5b8063136439dd14610147578063374823b51461015c57806349075da31461019f578063595c6a67146101da5780635ac86ab7146101e2575b600080fd5b61015a6101553660046110ba565b6103cc565b005b61018a61016a3660046110e8565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101cd6101ad366004611114565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101969190611163565b61015a6104a3565b61018a6101f036600461118b565b606654600160ff9092169190911b9081161490565b6066545b604051908152602001610196565b61015a610555565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610196565b6033546001600160a01b0316610246565b61015a61027d366004611225565b610567565b61020961029036600461131a565b61078c565b61015a6102a3366004611360565b61080c565b61015a6102b636600461137d565b6108f4565b6102097f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015a6102f03660046110e8565b61093b565b6102097fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102097f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103783660046110ba565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b61015a6103ac366004611360565b610a5d565b610209610ad6565b61015a6103c73660046110ba565b610ae5565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906113f1565b61047157604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104965760405163c61dca5d60e01b815260040160405180910390fd5b61049f82610bf6565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052b91906113f1565b61054857604051631d77d47760e21b815260040160405180910390fd5b610553600019610bf6565b565b61055d610c33565b6105536000610c8d565b6066546000906001908116036105905760405163840a48d560e01b815260040160405180910390fd5b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156105ca576105ca61114d565b036105e857604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff161561063057604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba91906113f1565b6106d757604051639f88c8af60e01b815260040160405180910390fd5b6106fb836106ef85338660200151876040015161078c565b84516040860151610cdf565b6001600160a01b038316600081815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161077f9190611163565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290526000906108039060c00160405160208183030381529060405280519060200120610d37565b95945050505050565b6066546000906001908116036108355760405163840a48d560e01b815260040160405180910390fd5b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561086f5761086f61114d565b1461088d576040516352df45c960e01b815260040160405180910390fd5b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916108e89190611163565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713838360405161092f929190611413565b60405180910390a25050565b600054610100900460ff161580801561095b5750600054600160ff909116105b806109755750303b158015610975575060005460ff166001145b6109dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a00576000805461ff0019166101001790555b610a0982610bf6565b610a1283610c8d565b8015610a58576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a65610c33565b6001600160a01b038116610aca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d4565b610ad381610c8d565b50565b6000610ae0610d7e565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b679190611442565b6001600160a01b0316336001600160a01b031614610b985760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610bbf5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161092f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146105535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b42811015610d0057604051630819bdcd60e01b815260040160405180910390fd5b610d146001600160a01b0385168484610e64565b610d3157604051638baa579f60e01b815260040160405180910390fd5b50505050565b6000610d41610d7e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610e3f5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000610e738585610ec5565b90925090506000816004811115610e8c57610e8c61114d565b148015610eaa5750856001600160a01b0316826001600160a01b0316145b80610ebb5750610ebb868686610f0a565b9695505050505050565b6000808251604103610efb5760208301516040840151606085015160001a610eef87828585610ff6565b94509450505050610f03565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401610f34929190611483565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f7291906114bd565b600060405180830381855afa9150503d8060008114610fad576040519150601f19603f3d011682016040523d82523d6000602084013e610fb2565b606091505b5091509150818015610fc657506020815110155b8015610ebb57508051630b135d3f60e11b90610feb90830160209081019084016114d9565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561102d57506000905060036110b1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611081573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110aa576000600192509250506110b1565b9150600090505b94509492505050565b6000602082840312156110cc57600080fd5b5035919050565b6001600160a01b0381168114610ad357600080fd5b600080604083850312156110fb57600080fd5b8235611106816110d3565b946020939093013593505050565b6000806040838503121561112757600080fd5b8235611132816110d3565b91506020830135611142816110d3565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061118557634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561119d57600080fd5b813560ff811681146111ae57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156111ee576111ee6111b5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561121d5761121d6111b5565b604052919050565b6000806040838503121561123857600080fd5b8235611243816110d3565b9150602083013567ffffffffffffffff81111561125f57600080fd5b83016060818603121561127157600080fd5b6112796111cb565b813567ffffffffffffffff81111561129057600080fd5b8201601f810187136112a157600080fd5b803567ffffffffffffffff8111156112bb576112bb6111b5565b6112ce601f8201601f19166020016111f4565b8181528860208385010111156112e357600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b6000806000806080858703121561133057600080fd5b843561133b816110d3565b9350602085013561134b816110d3565b93969395505050506040820135916060013590565b60006020828403121561137257600080fd5b81356111ae816110d3565b6000806020838503121561139057600080fd5b823567ffffffffffffffff8111156113a757600080fd5b8301601f810185136113b857600080fd5b803567ffffffffffffffff8111156113cf57600080fd5b8560208284010111156113e157600080fd5b6020919091019590945092505050565b60006020828403121561140357600080fd5b815180151581146111ae57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561145457600080fd5b81516111ae816110d3565b60005b8381101561147a578181015183820152602001611462565b50506000910152565b82815260406020820152600082518060408401526114a881606085016020870161145f565b601f01601f1916919091016060019392505050565b600082516114cf81846020870161145f565b9190910192915050565b6000602082840312156114eb57600080fd5b505191905056fea2646970667358221220dd25eee4e1c6471c996fe70248b8707a4c571d2cbb3e9d7c29f39e23b2de302b64736f6c634300081b0033", + Bin: "0x61010060405234801561001157600080fd5b506040516117c13803806117c18339810160408190526100309161020a565b81816001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610077610089565b60e052610082610133565b5050610244565b600060c051461461012c5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b5060e05190565b600054610100900460ff161561019f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101f0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461020757600080fd5b50565b6000806040838503121561021d57600080fd5b8251610228816101f2565b6020840151909250610239816101f2565b809150509250929050565b60805160a05160c05160e0516115286102996000396000610e4201526000610d82015260008181610348015261064f015260008181610224015281816103e1015281816104b80152610ae701526115286000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a364f4da116100b8578063dce974b91161007c578063dce974b91461031c578063df5cf72314610343578063ec76f4421461036a578063f2fde38b1461039e578063f698da25146103b1578063fabc1cbc146103b957600080fd5b8063a364f4da14610295578063a98fb355146102a8578063c825fe68146102bb578063cd6dc687146102e2578063d79aceab146102f557600080fd5b80635c975abb1161010a5780635c975abb14610205578063715018a614610217578063886f11951461021f5780638da5cb5b1461025e5780639926ee7d1461026f578063a1060c881461028257600080fd5b8063136439dd14610147578063374823b51461015c57806349075da31461019f578063595c6a67146101da5780635ac86ab7146101e2575b600080fd5b61015a6101553660046110ba565b6103cc565b005b61018a61016a3660046110e8565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101cd6101ad366004611114565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101969190611163565b61015a6104a3565b61018a6101f036600461118b565b606654600160ff9092169190911b9081161490565b6066545b604051908152602001610196565b61015a610555565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610196565b6033546001600160a01b0316610246565b61015a61027d366004611225565b610567565b61020961029036600461131a565b61078c565b61015a6102a3366004611360565b61080c565b61015a6102b636600461137d565b6108f4565b6102097f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015a6102f03660046110e8565b61093b565b6102097fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102097f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103783660046110ba565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b61015a6103ac366004611360565b610a5d565b610209610ad6565b61015a6103c73660046110ba565b610ae5565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906113f1565b61047157604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104965760405163c61dca5d60e01b815260040160405180910390fd5b61049f82610bf6565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052b91906113f1565b61054857604051631d77d47760e21b815260040160405180910390fd5b610553600019610bf6565b565b61055d610c33565b6105536000610c8d565b6066546000906001908116036105905760405163840a48d560e01b815260040160405180910390fd5b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156105ca576105ca61114d565b036105e857604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff161561063057604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba91906113f1565b6106d757604051639f88c8af60e01b815260040160405180910390fd5b6106fb836106ef85338660200151876040015161078c565b84516040860151610cdf565b6001600160a01b038316600081815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161077f9190611163565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290526000906108039060c00160405160208183030381529060405280519060200120610d37565b95945050505050565b6066546000906001908116036108355760405163840a48d560e01b815260040160405180910390fd5b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561086f5761086f61114d565b1461088d576040516352df45c960e01b815260040160405180910390fd5b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916108e89190611163565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713838360405161092f929190611413565b60405180910390a25050565b600054610100900460ff161580801561095b5750600054600160ff909116105b806109755750303b158015610975575060005460ff166001145b6109dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a00576000805461ff0019166101001790555b610a0982610bf6565b610a1283610c8d565b8015610a58576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a65610c33565b6001600160a01b038116610aca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d4565b610ad381610c8d565b50565b6000610ae0610d7e565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b679190611442565b6001600160a01b0316336001600160a01b031614610b985760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610bbf5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161092f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146105535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b42811015610d0057604051630819bdcd60e01b815260040160405180910390fd5b610d146001600160a01b0385168484610e64565b610d3157604051638baa579f60e01b815260040160405180910390fd5b50505050565b6000610d41610d7e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610e3f5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000610e738585610ec5565b90925090506000816004811115610e8c57610e8c61114d565b148015610eaa5750856001600160a01b0316826001600160a01b0316145b80610ebb5750610ebb868686610f0a565b9695505050505050565b6000808251604103610efb5760208301516040840151606085015160001a610eef87828585610ff6565b94509450505050610f03565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401610f34929190611483565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f7291906114bd565b600060405180830381855afa9150503d8060008114610fad576040519150601f19603f3d011682016040523d82523d6000602084013e610fb2565b606091505b5091509150818015610fc657506020815110155b8015610ebb57508051630b135d3f60e11b90610feb90830160209081019084016114d9565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561102d57506000905060036110b1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611081573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110aa576000600192509250506110b1565b9150600090505b94509492505050565b6000602082840312156110cc57600080fd5b5035919050565b6001600160a01b0381168114610ad357600080fd5b600080604083850312156110fb57600080fd5b8235611106816110d3565b946020939093013593505050565b6000806040838503121561112757600080fd5b8235611132816110d3565b91506020830135611142816110d3565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061118557634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561119d57600080fd5b813560ff811681146111ae57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156111ee576111ee6111b5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561121d5761121d6111b5565b604052919050565b6000806040838503121561123857600080fd5b8235611243816110d3565b9150602083013567ffffffffffffffff81111561125f57600080fd5b83016060818603121561127157600080fd5b6112796111cb565b813567ffffffffffffffff81111561129057600080fd5b8201601f810187136112a157600080fd5b803567ffffffffffffffff8111156112bb576112bb6111b5565b6112ce601f8201601f19166020016111f4565b8181528860208385010111156112e357600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b6000806000806080858703121561133057600080fd5b843561133b816110d3565b9350602085013561134b816110d3565b93969395505050506040820135916060013590565b60006020828403121561137257600080fd5b81356111ae816110d3565b6000806020838503121561139057600080fd5b823567ffffffffffffffff8111156113a757600080fd5b8301601f810185136113b857600080fd5b803567ffffffffffffffff8111156113cf57600080fd5b8560208284010111156113e157600080fd5b6020919091019590945092505050565b60006020828403121561140357600080fd5b815180151581146111ae57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561145457600080fd5b81516111ae816110d3565b60005b8381101561147a578181015183820152602001611462565b50506000910152565b82815260406020820152600082518060408401526114a881606085016020870161145f565b601f01601f1916919091016060019392505050565b600082516114cf81846020870161145f565b9190910192915050565b6000602082840312156114eb57600080fd5b505191905056fea2646970667358221220e0b3a16c5142794091c498a9f12f9c1be42882dbd18ad6a30bcc162fe1ddc85b64736f6c634300081b0033", } // ContractAVSDirectoryABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/AllocationManager/binding.go b/contracts/bindings/AllocationManager/binding.go index 5fcb67df..5a7496ce 100644 --- a/contracts/bindings/AllocationManager/binding.go +++ b/contracts/bindings/AllocationManager/binding.go @@ -79,8 +79,8 @@ type OperatorSet struct { // ContractAllocationManagerMetaData contains all meta data concerning the ContractAllocationManager contract. var ContractAllocationManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"encumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"wadToSlash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"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\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"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\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Empty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBlockNumber\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", - Bin: "0x61010060405234801561001157600080fd5b5060405161559d38038061559d83398101604081905261003091610180565b838282856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080529290921660a05263ffffffff90811660c0521660e052610087610090565b505050506101d9565b600054610100900460ff16156100fc5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461014d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461016457600080fd5b50565b805163ffffffff8116811461017b57600080fd5b919050565b6000806000806080858703121561019657600080fd5b84516101a18161014f565b60208601519094506101b28161014f565b92506101c060408601610167565b91506101ce60608601610167565b905092959194509250565b60805160a05160c05160e05161533e61025f6000396000818161051501526139530152600081816103250152818161112201526120970152600081816106a201528181610b400152818161143e01528181611ada01528181611be901526128bd01526000818161054f01528181610ca301528181611b370152612fb0015261533e6000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c8063715018a611610151578063a98fb355116100c3578063cd6dc68711610087578063cd6dc68714610677578063ce7b5e4b1461068a578063df5cf7231461069d578063f25f1610146106c4578063f2fde38b146106d7578063fabc1cbc146106ea57600080fd5b8063a98fb355146105fc578063b2447af71461060f578063b92f60a514610622578063b9fbaed114610635578063c221d8ae1461066457600080fd5b8063886f119511610115578063886f11951461054a5780638ce64854146105715780638da5cb5b1461059157806394d7d00c146105a2578063a9333ec8146105b5578063a984eb3a146105c857600080fd5b8063715018a6146104e257806376999342146104ea57806379ae50cd146104fd5780637bc1ef6114610510578063847d634f1461053757600080fd5b80634a10ffe5116101ea5780635ac86ab7116101ae5780635ac86ab7146104495780635c489bb51461046c5780635c975abb1461047f5780636cfb4481146104915780636e3492b5146104bc5780636e875dba146104cf57600080fd5b80634a10ffe5146103e85780634b5046ef14610408578063547afb871461041b57806356c483e61461042e578063595c6a671461044157600080fd5b8063260dc7581161023c578063260dc758146102fd5780632981eb77146103205780632bab2c4a1461035c578063304c10cd1461037c57806340120dab146103a75780634177a87c146103c857600080fd5b80630ea43e431461027957806310e1b9b81461028e578063136439dd146102b757806315ea7917146102ca57806315fe5028146102dd575b600080fd5b61028c610287366004614330565b6106fd565b005b6102a161029c366004614438565b610c58565b6040516102ae9190614482565b60405180910390f35b61028c6102c53660046144b5565b610c8e565b61028c6102d8366004614512565b610d65565b6102f06102eb366004614553565b611294565b6040516102ae91906145d5565b61031061030b3660046145e8565b6113b1565b60405190151581526020016102ae565b6103477f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102ae565b61036f61036a36600461469d565b6113e9565b6040516102ae9190614758565b61038f61038a366004614553565b6116e5565b6040516001600160a01b0390911681526020016102ae565b6103ba6103b53660046147bd565b611715565b6040516102ae929190614859565b6103db6103d63660046145e8565b611898565b6040516102ae91906148b9565b6103fb6103f63660046148cc565b6118bf565b6040516102ae9190614912565b61028c61041636600461495e565b611969565b6103fb6104293660046149e4565b611a25565b61028c61043c366004614a33565b611acf565b61028c611b22565b610310610457366004614a68565b606654600160ff9092169190911b9081161490565b61028c61047a366004614a8b565b611bd4565b6066545b6040519081526020016102ae565b6104a461049f3660046147bd565b611c86565b6040516001600160401b0390911681526020016102ae565b61028c6104ca366004614abe565b611df7565b6103db6104dd3660046145e8565b6121da565b61028c6121ec565b61028c6104f8366004614af2565b6121fe565b6102f061050b366004614553565b61232c565b6103477f000000000000000000000000000000000000000000000000000000000000000081565b61028c610545366004614512565b61240b565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b61058461057f366004614b44565b61263d565b6040516102ae9190614b8b565b6033546001600160a01b031661038f565b6103fb6105b0366004614b9e565b612706565b6104a46105c33660046147bd565b6127f6565b6104a46105d63660046147bd565b60a26020908152600092835260408084209091529082529020546001600160401b031681565b61028c61060a366004614bfd565b612826565b61048361061d3660046145e8565b61286d565b61028c610630366004614abe565b61287f565b610648610643366004614553565b612ba2565b60408051921515835263ffffffff9091166020830152016102ae565b6103db610672366004614c6f565b612c3d565b61028c610685366004614c9c565b612c6f565b61028c610698366004614af2565b612d91565b61038f7f000000000000000000000000000000000000000000000000000000000000000081565b61028c6106d2366004614553565b612ebf565b61028c6106e5366004614553565b612f38565b61028c6106f83660046144b5565b612fae565b6066546001906002908116036107265760405163840a48d560e01b815260040160405180910390fd5b816040013560001080156107465750670de0b6b3a7640000604083013511155b61076357604051631353603160e01b815260040160405180910390fd5b60006040518060400160405280336001600160a01b031681526020018460200160208101906107929190614a8b565b63ffffffff169052905060006107b46107ae6020860186614553565b836130bf565b60208084015184516001600160a01b03166000908152609890925260409091209192506107eb919063ffffffff9081169061313616565b61080857604051631fb1705560e21b815260040160405180910390fd5b80610826576040516325131d4f60e01b815260040160405180910390fd5b600061084b609960006108388661314e565b81526020019081526020016000206131ae565b90506000816001600160401b038111156108675761086761437f565b604051908082528060200260200182016040528015610890578160200160208202803683370190505b5090506000826001600160401b038111156108ad576108ad61437f565b6040519080825280602002602001820160405280156108d6578160200160208202803683370190505b50905060005b83811015610bf657600061091382609960006108f78b61314e565b81526020019081526020016000206131b890919063ffffffff16565b905060008061093761092860208d018d614553565b6109318b61314e565b856131c4565b915091508286858151811061094e5761094e614cc8565b6001600160a01b039092166020928302919091019091015280516001600160401b031660000361098057505050610bee565b805160009061099c906001600160401b031660408e0135613335565b83519091506000906109ba906001600160401b03808516911661334c565b9050808787815181106109cf576109cf614cc8565b60200260200101818152505081836000018181516109ed9190614cf4565b6001600160401b0316905250835182908590610a0a908390614cf4565b6001600160401b0316905250602084018051839190610a2a908390614cf4565b6001600160401b031690525060208301516000600f9190910b1215610b04576000610a708e604001358560200151610a6190614d13565b6001600160801b031690613335565b9050806001600160401b031684602001818151610a8d9190614d39565b915090600f0b9081600f0b815250507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8e6000016020810190610ad09190614553565b8d88610ae488600001518960200151613361565b8860400151604051610afa959493929190614d66565b60405180910390a1505b610b25610b1460208f018f614553565b610b1d8d61314e565b878787613376565b610b3e610b3560208f018f614553565b855187906135eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b6f73bdf8e6000016020810190610b809190614553565b6040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908816602482015260448101849052606401600060405180830381600087803b158015610bd057600080fd5b505af1158015610be4573d6000803e3d6000fd5b5050505050505050505b6001016108dc565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe5610c256020890189614553565b868484610c3560608d018d614db7565b604051610c4796959493929190614e26565b60405180910390a150505050505050565b6040805160608101825260008082526020820181905291810182905290610c82856109318661314e565b925050505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d169190614e89565b610d3357604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610d585760405163c61dca5d60e01b815260040160405180910390fd5b610d6182613670565b5050565b606654600090600190811603610d8e5760405163840a48d560e01b815260040160405180910390fd5b600080610d9a33612ba2565b9150915081610dbc5760405163fa55fc8160e01b815260040160405180910390fd5b60005b8481101561128c57858582818110610dd957610dd9614cc8565b9050602002810190610deb9190614eab565b610df9906060810190614ecb565b9050868683818110610e0d57610e0d614cc8565b9050602002810190610e1f9190614eab565b610e2d906040810190614ecb565b905014610e4d576040516343714afd60e01b815260040160405180910390fd5b36868683818110610e6057610e60614cc8565b9050602002810190610e729190614eab565b90506000610e8e33610e89368590038501856145e8565b6130bf565b9050610ed9610ea36040840160208501614a8b565b63ffffffff1660986000610eba6020870187614553565b6001600160a01b03168152602081019190915260400160002090613136565b610ef657604051631fb1705560e21b815260040160405180910390fd5b60005b888885818110610f0b57610f0b614cc8565b9050602002810190610f1d9190614eab565b610f2b906040810190614ecb565b9050811015611281576000898986818110610f4857610f48614cc8565b9050602002810190610f5a9190614eab565b610f68906040810190614ecb565b83818110610f7857610f78614cc8565b9050602002016020810190610f8d9190614553565b9050610f9c338261ffff6136ad565b600080610fba33610931610fb5368a90038a018a6145e8565b61314e565b915091508060200151600f0b600014610fe657604051630d8fcbe360e41b815260040160405180910390fd5b6000611002610ffa368990038901896145e8565b8584896137b6565b905061106882600001518e8e8b81811061101e5761101e614cc8565b90506020028101906110309190614eab565b61103e906060810190614ecb565b8881811061104e5761104e614cc8565b90506020020160208101906110639190614f14565b613823565b600f0b6020830181905260000361109257604051634606179360e11b815260040160405180910390fd5b60008260200151600f0b12156111e55780156111575761111d6110bd610fb5368a90038a018a6145e8565b33600090815260a3602090815260408083206001600160a01b038a1684529091529020908154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6111477f000000000000000000000000000000000000000000000000000000000000000043614f3d565b63ffffffff166040830152611253565b61116983602001518360200151613361565b6001600160401b031660208401528c8c8981811061118957611189614cc8565b905060200281019061119b9190614eab565b6111a9906060810190614ecb565b868181106111b9576111b9614cc8565b90506020020160208101906111ce9190614f14565b6001600160401b0316825260006020830152611253565b60008260200151600f0b13156112535761120783602001518360200151613361565b6001600160401b03908116602085018190528451909116101561123d57604051636c9be0bf60e01b815260040160405180910390fd5b6112478943614f3d565b63ffffffff1660408301525b61127133611269610fb5368b90038b018b6145e8565b868686613376565b505060019092019150610ef99050565b505050600101610dbf565b505050505050565b6001600160a01b0381166000908152609d60205260408120606091906112b9906131ae565b90506000816001600160401b038111156112d5576112d561437f565b60405190808252806020026020018201604052801561131a57816020015b60408051808201909152600080825260208201528152602001906001900390816112f35790505b50905060005b828110156113a9576001600160a01b0385166000908152609d602052604090206113849061134e90836131b8565b60408051808201909152600080825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b82828151811061139657611396614cc8565b6020908102919091010152600101611320565b509392505050565b60208082015182516001600160a01b031660009081526098909252604082206113e39163ffffffff9081169061313616565b92915050565b606083516001600160401b038111156114045761140461437f565b60405190808252806020026020018201604052801561143757816020015b60608152602001906001900390816114225790505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161148a929190614f59565b600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190614f7e565b905060005b85518110156116db5760008682815181106114f1576114f1614cc8565b6020026020010151905085516001600160401b038111156115145761151461437f565b60405190808252806020026020018201604052801561153d578160200160208202803683370190505b5084838151811061155057611550614cc8565b602002602001018190525060005b86518110156116d157600087828151811061157b5761157b614cc8565b6020908102919091018101516001600160a01b03808616600090815260a18452604080822092841682529190935282209092506115b79061383b565b9050806001600160401b03166000036115d15750506116c9565b60006115de858d85610c58565b90508863ffffffff16816040015163ffffffff1611158015611607575060008160200151600f0b125b1561162a5761161e81600001518260200151613361565b6001600160401b031681525b8051600090611646906001600160401b0390811690851661334c565b905061168d8189898151811061165e5761165e614cc8565b6020026020010151878151811061167757611677614cc8565b602002602001015161388990919063ffffffff16565b89888151811061169f5761169f614cc8565b602002602001015186815181106116b8576116b8614cc8565b602002602001018181525050505050505b60010161155e565b50506001016114d4565b5050949350505050565b6001600160a01b03808216600090815260976020526040812054909116801561170e5780610c87565b5090919050565b6001600160a01b0382166000908152609d60205260408120606091829161173b906131ae565b90506000816001600160401b038111156117575761175761437f565b60405190808252806020026020018201604052801561179c57816020015b60408051808201909152600080825260208201528152602001906001900390816117755790505b5090506000826001600160401b038111156117b9576117b961437f565b60405190808252806020026020018201604052801561180457816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816117d75790505b50905060005b83811015611889576001600160a01b0388166000908152609d602052604081206118389061134e90846131b8565b90508084838151811061184d5761184d614cc8565b602002602001018190525061186389828a610c58565b83838151811061187557611875614cc8565b60209081029190910101525060010161180a565b509093509150505b9250929050565b60606000610c87609960006118ac8661314e565b815260200190815260200160002061389e565b6060600083516001600160401b038111156118dc576118dc61437f565b604051908082528060200260200182016040528015611905578160200160208202803683370190505b50905060005b84518110156113a95761193785828151811061192957611929614cc8565b6020026020010151856127f6565b82828151811061194957611949614cc8565b6001600160401b039092166020928302919091019091015260010161190b565b6066546000906001908116036119925760405163840a48d560e01b815260040160405180910390fd5b8382146119b2576040516343714afd60e01b815260040160405180910390fd5b60005b84811015611a1c57611a14878787848181106119d3576119d3614cc8565b90506020020160208101906119e89190614553565b8686858181106119fa576119fa614cc8565b9050602002016020810190611a0f9190615092565b6136ad565b6001016119b5565b50505050505050565b6060600082516001600160401b03811115611a4257611a4261437f565b604051908082528060200260200182016040528015611a6b578160200160208202803683370190505b50905060005b83518110156113a957611a9d85858381518110611a9057611a90614cc8565b60200260200101516127f6565b828281518110611aaf57611aaf614cc8565b6001600160401b0390921660209283029190910190910152600101611a71565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b185760405163f739589b60e01b815260040160405180910390fd5b610d6182826138ab565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baa9190614e89565b611bc757604051631d77d47760e21b815260040160405180910390fd5b611bd2600019613670565b565b6040516336b87bd760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636d70f7ae90602401602060405180830381865afa158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190614e89565b611c79576040516325ec6c1f60e01b815260040160405180910390fd5b611c8333826138ab565b50565b6001600160a01b03828116600081815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b0390911690600f81810b600160801b909204900b03825b81811015611db3576001600160a01b03808716600090815260a3602090815260408083209389168352929052908120611d1a9083613a4e565b6001600160a01b03888116600090815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff16918101829052919250431015611d96575050611db3565b611da4858260200151613361565b94505050806001019050611ce1565b506001600160a01b03808616600090815260a1602090815260408083209388168352929052208290611de49061383b565b611dee9190614cf4565b95945050505050565b606654600290600490811603611e205760405163840a48d560e01b815260040160405180910390fd5b611e2d6020830183614553565b6001600160a01b0316336001600160a01b03161480611e6c5750611e576040830160208401614553565b6001600160a01b0316336001600160a01b0316145b611e89576040516348f5c3ed60e01b815260040160405180910390fd5b60005b611e996040840184614ecb565b905081101561214c5760006040518060400160405280856020016020810190611ec29190614553565b6001600160a01b03168152602001611edd6040870187614ecb565b85818110611eed57611eed614cc8565b9050602002016020810190611f029190614a8b565b63ffffffff168152509050611f32816020015163ffffffff1660986000876020016020810190610eba9190614553565b611f4f57604051631fb1705560e21b815260040160405180910390fd5b609e6000611f606020870187614553565b6001600160a01b03166001600160a01b031681526020019081526020016000206000611f8b8361314e565b815260208101919091526040016000205460ff16611fbc576040516325131d4f60e01b815260040160405180910390fd5b611ff8611fc88261314e565b609c6000611fd96020890189614553565b6001600160a01b03168152602081019190915260400160002090613abf565b506120326120096020860186614553565b609a60006120168561314e565b8152602001908152602001600020613acb90919063ffffffff16565b506120406020850185614553565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe8260405161207891906150b6565b60405180910390a26040805180820190915260008152602081016120bc7f000000000000000000000000000000000000000000000000000000000000000043614f3d565b63ffffffff169052609e60006120d56020880188614553565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006121008461314e565b815260208082019290925260400160002082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611e8c565b5061216061038a6040840160208501614553565b6001600160a01b0316639d8e0c2361217b6020850185614553565b6121886040860186614ecb565b6040518463ffffffff1660e01b81526004016121a6939291906150ff565b600060405180830381600087803b1580156121c057600080fd5b505af19250505080156121d1575060015b15610d61575050565b60606113e3609a60006118ac8561314e565b6121f4613ae0565b611bd26000613b3a565b6040805180820182523380825263ffffffff8087166020808501829052600093845260989052939091209192612235929161313616565b61225257604051631fb1705560e21b815260040160405180910390fd5b600061225d8261314e565b905060005b8381101561128c576122a885858381811061227f5761227f614cc8565b90506020020160208101906122949190614553565b600084815260996020526040902090613b8c565b6122c55760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b838686848181106122f9576122f9614cc8565b905060200201602081019061230e9190614553565b60405161231c929190615124565b60405180910390a1600101612262565b6001600160a01b0381166000908152609c6020526040812060609190612351906131ae565b90506000816001600160401b0381111561236d5761236d61437f565b6040519080825280602002602001820160405280156123b257816020015b604080518082019091526000808252602082015281526020019060019003908161238b5790505b50905060005b828110156113a9576001600160a01b0385166000908152609c602052604090206123e69061134e90836131b8565b8282815181106123f8576123f8614cc8565b60209081029190910101526001016123b8565b60005b818110156126385760006040518060400160405280336001600160a01b0316815260200185858581811061244457612444614cc8565b9050602002810190612456919061514a565b612464906020810190614a8b565b63ffffffff90811690915260208083015133600090815260989092526040909120929350612497929190811690613ba116565b6124b457604051631fb1705560e21b815260040160405180910390fd5b60408051808201825233815260208381015163ffffffff169082015290517f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c916124fd916150b6565b60405180910390a160006125108261314e565b905060005b85858581811061252757612527614cc8565b9050602002810190612539919061514a565b612547906020810190614ecb565b905081101561262d5761259586868681811061256557612565614cc8565b9050602002810190612577919061514a565b612585906020810190614ecb565b8381811061227f5761227f614cc8565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b838787878181106125ca576125ca614cc8565b90506020028101906125dc919061514a565b6125ea906020810190614ecb565b848181106125fa576125fa614cc8565b905060200201602081019061260f9190614553565b60405161261d929190615124565b60405180910390a1600101612515565b50505060010161240e565b505050565b6060600084516001600160401b0381111561265a5761265a61437f565b6040519080825280602002602001820160405280156126a557816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816126785790505b50905060005b85518110156126fd576126d88682815181106126c9576126c9614cc8565b60200260200101518686610c58565b8282815181106126ea576126ea614cc8565b60209081029190910101526001016126ab565b50949350505050565b6060600083516001600160401b038111156127235761272361437f565b60405190808252806020026020018201604052801561274c578160200160208202803683370190505b50905060005b84518110156126fd576001600160a01b038616600090815260a16020526040812086516127c49287929189908690811061278e5761278e614cc8565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020613bad90919063ffffffff16565b8282815181106127d6576127d6614cc8565b6001600160401b0390921660209283029190910190910152600101612752565b6001600160a01b03808316600090815260a1602090815260408083209385168352929052908120610c879061383b565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051612861929190615160565b60405180910390a25050565b60006113e3609a60006108388561314e565b6066546002906004908116036128a85760405163840a48d560e01b815260040160405180910390fd5b6040516336b87bd760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636d70f7ae90602401602060405180830381865afa15801561290c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129309190614e89565b61294d5760405163ccea9e6f60e01b815260040160405180910390fd5b60005b61295d6020840184614ecb565b9050811015612b1a5760408051808201909152600090806129816020870187614553565b6001600160a01b0316815260200185806020019061299f9190614ecb565b858181106129af576129af614cc8565b90506020020160208101906129c49190614a8b565b63ffffffff90811690915260208083015183516001600160a01b0316600090815260989092526040909120929350612a0192919081169061313616565b612a1e57604051631fb1705560e21b815260040160405180910390fd5b612a2833826130bf565b15612a4657604051636c6c6e2760e11b815260040160405180910390fd5b612a67612a528261314e565b336000908152609c6020526040902090613ba1565b50612a9533609a6000612a798561314e565b8152602001908152602001600020613b8c90919063ffffffff16565b50336001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612acf91906150b6565b60405180910390a2336000908152609e60205260408120600191612af28461314e565b81526020810191909152604001600020805460ff191691151591909117905550600101612950565b50612b2b61038a6020840184614553565b6001600160a01b031663adcf73f733612b476020860186614ecb565b612b546040880188614db7565b6040518663ffffffff1660e01b8152600401612b74959493929190615174565b600060405180830381600087803b158015612b8e57600080fd5b505af115801561128c573d6000803e3d6000fd5b6001600160a01b0381166000908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612c245750826060015163ffffffff164310155b15612c33575050604081015160015b9590945092505050565b6001600160a01b0382166000908152609f6020526040812060609190612c6790826118ac8661314e565b949350505050565b600054610100900460ff1615808015612c8f5750600054600160ff909116105b80612ca95750303b158015612ca9575060005460ff166001145b612d115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015612d34576000805461ff0019166101001790555b612d3d82613670565b612d4683613b3a565b8015612638576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b6040805180820182523380825263ffffffff8087166020808501829052600093845260989052939091209192612dc8929161313616565b612de557604051631fb1705560e21b815260040160405180910390fd5b6000612df08261314e565b905060005b8381101561128c57612e3b858583818110612e1257612e12614cc8565b9050602002016020810190612e279190614553565b600084815260996020526040902090613acb565b612e58576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83868684818110612e8c57612e8c614cc8565b9050602002016020810190612ea19190614553565b604051612eaf929190615124565b60405180910390a1600101612df5565b33600081815260976020526040902080546001600160a01b0319166001600160a01b0384161790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf8590612f12816116e5565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b612f40613ae0565b6001600160a01b038116612fa55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612d08565b611c8381613b3a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303091906151b8565b6001600160a01b0316336001600160a01b0316146130615760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146130885760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001612861565b6001600160a01b0382166000908152609e602052604081208190816130e38561314e565b8152602080820192909252604090810160002081518083019092525460ff8116151580835261010090910463ffffffff1692820192909252915080612c6757506020015163ffffffff1643109392505050565b60008181526001830160205260408120541515610c87565b60008160000151826020015163ffffffff1660405160200161319692919060609290921b6001600160601b031916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526113e3906151d5565b60006113e3825490565b6000610c878383613bfe565b604080518082018252600080825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906132259061383b565b6001600160401b0390811682526001600160a01b03898116600081815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156132c857909250905061332d565b6132da81600001518260200151613361565b6001600160401b0316815260208101516000600f9190910b12156133195761330a82602001518260200151613361565b6001600160401b031660208301525b600060408201819052602082015290925090505b935093915050565b6000610c878383670de0b6b3a76400006001613c28565b6000610c8783670de0b6b3a764000084613c83565b6000610c87826001600160401b038516614d39565b602082810180516001600160a01b03888116600081815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a16001600160a01b03858116600090815260a060209081526040808320888452825280832093871683529281528282208451815486840151878701516001600160401b039093166001600160c01b031990921691909117600160401b6001600160801b03909216919091021763ffffffff60c01b1916600160c01b63ffffffff9283160217909155835180850185528381528201929092528251808401909352606087901c8352908616908201527f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd90869083516040516134e493929188914390614d66565b60405180910390a16020810151600f0b1561354f576001600160a01b0385166000908152609f6020908152604080832087845290915290206135269084613b8c565b506001600160a01b0385166000908152609d602052604090206135499085613ba1565b506135e4565b80516001600160401b03166000036135e4576001600160a01b0385166000908152609f60209081526040808320878452909152902061358e9084613acb565b506001600160a01b0385166000908152609f6020908152604080832087845290915290206135bb906131ae565b6000036135e4576001600160a01b0385166000908152609d6020526040902061128c9085613abf565b5050505050565b6001600160a01b03808416600090815260a16020908152604080832093861683529290522061361b904383613d6d565b5050604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612d84565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6001600160a01b03838116600090815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b6000811180156136f957508261ffff1682105b156135e4576001600160a01b03808616600090815260a360209081526040808320938816835292905290812061372e90613d87565b905060008061373e3384896131c4565b91509150806040015163ffffffff1643101561375c575050506135e4565b6137698884898585613376565b6001600160a01b03808916600090815260a360209081526040808320938b1683529290522061379790613ddb565b506137a1856151f9565b94506137ac84615212565b93505050506136e6565b60006137e584609960006137c98961314e565b8152602001908152602001600020613e5a90919063ffffffff16565b6137f157506000612c67565b816137fe57506000612c67565b82516001600160401b031660000361381857506000612c67565b506001949350505050565b6000610c876001600160401b03808516908416615229565b805460009080156138795761386383613855600184615256565b600091825260209091200190565b54600160201b90046001600160401b0316610c87565b670de0b6b3a76400009392505050565b6000610c878383670de0b6b3a7640000613c83565b60606000610c8783613e7c565b6001600160a01b0382166000908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b9092041660608201819052158015906139285750806060015163ffffffff164310155b1561394257604081015163ffffffff168152600160208201525b63ffffffff821660408201526139787f000000000000000000000000000000000000000000000000000000000000000043614f3d565b63ffffffff90811660608381019182526001600160a01b0386166000818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101612d84565b600080613a71613a5d84613ed8565b8554613a6c9190600f0b615269565b613f46565b8454909150600160801b9004600f90810b9082900b12613aa457604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b6000610c878383613faf565b6000610c87836001600160a01b038416613faf565b6033546001600160a01b03163314611bd25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612d08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610c87836001600160a01b0384166140a2565b6000610c8783836140a2565b815460009081613bbf858583856140f1565b90508015613bec57613bd685613855600184615256565b54600160201b90046001600160401b0316611dee565b50670de0b6b3a7640000949350505050565b6000826000018281548110613c1557613c15614cc8565b9060005260206000200154905092915050565b600080613c36868686613c83565b90506001836002811115613c4c57613c4c615291565b148015613c69575060008480613c6457613c646152a7565b868809115b15611dee57613c796001826152bd565b9695505050505050565b6000808060001985870985870292508281108382030391505080600003613cbd57838281613cb357613cb36152a7565b0492505050610c87565b808411613d045760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612d08565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600080613d7b858585614147565b91509150935093915050565b6000613da28254600f81810b600160801b909204900b131590565b15613dc057604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b6000613df68254600f81810b600160801b909204900b131590565b15613e1457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6001600160a01b03811660009081526001830160205260408120541515610c87565b606081600001805480602002602001604051908101604052809291908181526020018280548015613ecc57602002820191906000526020600020905b815481526020019060010190808311613eb8575b50505050509050919050565b60006001600160ff1b03821115613f425760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612d08565b5090565b80600f81900b8114613faa5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612d08565b919050565b60008181526001830160205260408120548015614098576000613fd3600183615256565b8554909150600090613fe790600190615256565b905081811461404c57600086600001828154811061400757614007614cc8565b906000526020600020015490508087600001848154811061402a5761402a614cc8565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061405d5761405d6152d0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506113e3565b60009150506113e3565b60008181526001830160205260408120546140e9575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556113e3565b5060006113e3565b60005b818310156113a95760006141088484614315565b60008781526020902090915063ffffffff86169082015463ffffffff16111561413357809250614141565b61413e8160016152bd565b93505b506140f4565b8254600090819080156142a857600061416587613855600185615256565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160401b0316602084015291925090871610156141e65760405162461bcd60e51b815260206004820152601960248201527f536e617073686f743a2064656372656173696e67206b657973000000000000006044820152606401612d08565b805163ffffffff808816911603614237578461420788613855600186615256565b80546001600160401b0392909216600160201b026bffffffffffffffff0000000019909216919091179055614298565b6040805180820190915263ffffffff80881682526001600160401b0380881660208085019182528b54600181018d5560008d8152919091209451940180549151909216600160201b026001600160601b031990911693909216929092171790555b60200151925083915061332d9050565b50506040805180820190915263ffffffff80851682526001600160401b0380851660208085019182528854600181018a5560008a81529182209551950180549251909316600160201b026001600160601b031990921694909316939093179290921790915590508161332d565b600061432460028484186152e6565b610c87908484166152bd565b60006020828403121561434257600080fd5b81356001600160401b0381111561435857600080fd5b820160808185031215610c8757600080fd5b6001600160a01b0381168114611c8357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156143bd576143bd61437f565b604052919050565b803563ffffffff81168114613faa57600080fd5b6000604082840312156143eb57600080fd5b604080519081016001600160401b038111828210171561440d5761440d61437f565b604052905080823561441e8161436a565b815261442c602084016143c5565b60208201525092915050565b60008060006080848603121561444d57600080fd5b83356144588161436a565b925061446785602086016143d9565b915060608401356144778161436a565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016113e3565b6000602082840312156144c757600080fd5b5035919050565b60008083601f8401126144e057600080fd5b5081356001600160401b038111156144f757600080fd5b6020830191508360208260051b850101111561189157600080fd5b6000806020838503121561452557600080fd5b82356001600160401b0381111561453b57600080fd5b614547858286016144ce565b90969095509350505050565b60006020828403121561456557600080fd5b8135610c878161436a565b80516001600160a01b0316825260209081015163ffffffff16910152565b600081518084526020840193506020830160005b828110156145cb576145b5868351614570565b60409590950194602091909101906001016145a2565b5093949350505050565b602081526000610c87602083018461458e565b6000604082840312156145fa57600080fd5b610c8783836143d9565b60006001600160401b0382111561461d5761461d61437f565b5060051b60200190565b600082601f83011261463857600080fd5b813561464b61464682614604565b614395565b8082825260208201915060208360051b86010192508583111561466d57600080fd5b602085015b838110156146935780356146858161436a565b835260209283019201614672565b5095945050505050565b60008060008060a085870312156146b357600080fd5b6146bd86866143d9565b935060408501356001600160401b038111156146d857600080fd5b6146e487828801614627565b93505060608501356001600160401b0381111561470057600080fd5b61470c87828801614627565b92505061471b608086016143c5565b905092959194509250565b600081518084526020840193506020830160005b828110156145cb57815186526020958601959091019060010161473a565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156147b157603f1987860301845261479c858351614726565b94506020938401939190910190600101614780565b50929695505050505050565b600080604083850312156147d057600080fd5b82356147db8161436a565b915060208301356147eb8161436a565b809150509250929050565b600081518084526020840193506020830160005b828110156145cb5761484386835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b606095909501946020919091019060010161480a565b60408152600061486c604083018561458e565b8281036020840152611dee81856147f6565b600081518084526020840193506020830160005b828110156145cb5781516001600160a01b0316865260209586019590910190600101614892565b602081526000610c87602083018461487e565b600080604083850312156148df57600080fd5b82356001600160401b038111156148f557600080fd5b61490185828601614627565b92505060208301356147eb8161436a565b602080825282518282018190526000918401906040840190835b818110156149535783516001600160401b031683526020938401939092019160010161492c565b509095945050505050565b60008060008060006060868803121561497657600080fd5b85356149818161436a565b945060208601356001600160401b0381111561499c57600080fd5b6149a8888289016144ce565b90955093505060408601356001600160401b038111156149c757600080fd5b6149d3888289016144ce565b969995985093965092949392505050565b600080604083850312156149f757600080fd5b8235614a028161436a565b915060208301356001600160401b03811115614a1d57600080fd5b614a2985828601614627565b9150509250929050565b60008060408385031215614a4657600080fd5b8235614a518161436a565b9150614a5f602084016143c5565b90509250929050565b600060208284031215614a7a57600080fd5b813560ff81168114610c8757600080fd5b600060208284031215614a9d57600080fd5b610c87826143c5565b600060608284031215614ab857600080fd5b50919050565b600060208284031215614ad057600080fd5b81356001600160401b03811115614ae657600080fd5b612c6784828501614aa6565b600080600060408486031215614b0757600080fd5b614b10846143c5565b925060208401356001600160401b03811115614b2b57600080fd5b614b37868287016144ce565b9497909650939450505050565b600080600060808486031215614b5957600080fd5b83356001600160401b03811115614b6f57600080fd5b614b7b86828701614627565b93505061446785602086016143d9565b602081526000610c8760208301846147f6565b600080600060608486031215614bb357600080fd5b8335614bbe8161436a565b925060208401356001600160401b03811115614bd957600080fd5b614be586828701614627565b925050614bf4604085016143c5565b90509250925092565b60008060208385031215614c1057600080fd5b82356001600160401b03811115614c2657600080fd5b8301601f81018513614c3757600080fd5b80356001600160401b03811115614c4d57600080fd5b856020828401011115614c5f57600080fd5b6020919091019590945092505050565b60008060608385031215614c8257600080fd5b8235614c8d8161436a565b9150614a5f84602085016143d9565b60008060408385031215614caf57600080fd5b8235614cba8161436a565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160401b0382811682821603908111156113e3576113e3614cde565b600081600f0b60016001607f1b03198103614d3057614d30614cde565b60000392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156113e3576113e3614cde565b6001600160a01b038616815260c08101614d836020830187614570565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b6000808335601e19843603018112614dce57600080fd5b8301803591506001600160401b03821115614de857600080fd5b60200191503681900382131561189157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0387168152614e3f6020820187614570565b60c060608201526000614e5560c083018761487e565b8281036080840152614e678187614726565b905082810360a0840152614e7c818587614dfd565b9998505050505050505050565b600060208284031215614e9b57600080fd5b81518015158114610c8757600080fd5b60008235607e19833603018112614ec157600080fd5b9190910192915050565b6000808335601e19843603018112614ee257600080fd5b8301803591506001600160401b03821115614efc57600080fd5b6020019150600581901b360382131561189157600080fd5b600060208284031215614f2657600080fd5b81356001600160401b0381168114610c8757600080fd5b63ffffffff81811683821601908111156113e3576113e3614cde565b604081526000614f6c604083018561487e565b8281036020840152611dee818561487e565b600060208284031215614f9057600080fd5b81516001600160401b03811115614fa657600080fd5b8201601f81018413614fb757600080fd5b8051614fc561464682614604565b8082825260208201915060208360051b850101925086831115614fe757600080fd5b602084015b838110156150875780516001600160401b0381111561500a57600080fd5b8501603f8101891361501b57600080fd5b602081015161502c61464682614604565b808282526020820191506020808460051b8601010192508b83111561505057600080fd5b6040840193505b82841015615072578351825260209384019390910190615057565b86525050602093840193919091019050614fec565b509695505050505050565b6000602082840312156150a457600080fd5b813561ffff81168114610c8757600080fd5b604081016113e38284614570565b81835260208301925060008160005b848110156145cb5763ffffffff6150e9836143c5565b16865260209586019591909101906001016150d3565b6001600160a01b0384168152604060208201819052600090611dee90830184866150c4565b606081016151328285614570565b6001600160a01b039290921660409190910152919050565b60008235603e19833603018112614ec157600080fd5b602081526000612c67602083018486614dfd565b6001600160a01b038616815260606020820181905260009061519990830186886150c4565b82810360408401526151ac818587614dfd565b98975050505050505050565b6000602082840312156151ca57600080fd5b8151610c878161436a565b80516020808301519190811015614ab85760001960209190910360031b1b16919050565b60006001820161520b5761520b614cde565b5060010190565b60008161522157615221614cde565b506000190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156113e3576113e3614cde565b818103818111156113e3576113e3614cde565b808201828112600083128015821682158216171561528957615289614cde565b505092915050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b808201808211156113e3576113e3614cde565b634e487b7160e01b600052603160045260246000fd5b60008261530357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b6d280e0e6895995aaac91a384ae2068c66dc78fe2e7b4ad9e628fbe5193645064736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"encumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"wadToSlash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"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\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"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\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Empty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBlockNumber\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", + Bin: "0x61012060405234801561001157600080fd5b5060405161590f38038061590f83398101604081905261003091610186565b82858383876001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008c610096565b50505050506101f3565b600054610100900460ff16156101025760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610153576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461016a57600080fd5b50565b805163ffffffff8116811461018157600080fd5b919050565b600080600080600060a0868803121561019e57600080fd5b85516101a981610155565b60208701519095506101ba81610155565b60408701519094506101cb81610155565b92506101d96060870161016d565b91506101e76080870161016d565b90509295509295909350565b60805160a05160c05160e0516101005161568461028b600039600081816103e5015261345f015260008181610534015261370001526000818161031d01528181611a3101526126e90152600081816106e701528181610c9601528181611471015281816114db01528181611fe3015261293e01526000818161055b015281816107800152818161158201526130c901526156846000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80636e875dba1161015c578063a984eb3a116100ce578063c221d8ae11610087578063c221d8ae146106a9578063cd6dc687146106bc578063d3d96ff4146106cf578063df5cf723146106e2578063f2fde38b14610709578063fabc1cbc1461071c57600080fd5b8063a984eb3a146105fa578063adc2e3d91461062e578063b2447af714610641578063b66bd98914610654578063b9fbaed114610667578063ba1a84e51461069657600080fd5b80638ce64854116101205780638ce648541461057d5780638da5cb5b1461059d57806394d7d00c146105ae578063952899ee146105c1578063a9333ec8146105d4578063a9821821146105e757600080fd5b80636e875dba14610501578063715018a61461051457806379ae50cd1461051c5780637bc1ef611461052f578063886f11951461055657600080fd5b80634a10ffe5116101f5578063595c6a67116101b9578063595c6a67146104735780635ac86ab71461047b5780635c975abb1461049e5780636cfb4481146104b05780636e3492b5146104db5780636e7d9fa8146104ee57600080fd5b80634a10ffe5146104075780634b5046ef1461042757806350feea201461043a578063547afb871461044d57806356c483e61461046057600080fd5b80632981eb77116102475780632981eb77146103185780632bab2c4a14610354578063304c10cd1461037457806340120dab1461039f5780634177a87c146103c05780634657e26a146103e057600080fd5b806310e1b9b814610284578063136439dd146102ad57806315fe5028146102c2578063260dc758146102e2578063261f84e014610305575b600080fd5b610297610292366004614542565b61072f565b6040516102a4919061458c565b60405180910390f35b6102c06102bb3660046145bf565b61076b565b005b6102d56102d03660046145d8565b610842565b6040516102a4919061465a565b6102f56102f036600461466d565b61095f565b60405190151581526020016102a4565b6102c06103133660046146cd565b610997565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102a4565b6103676103623660046147ba565b610c41565b6040516102a49190614875565b6103876103823660046145d8565b610f3d565b6040516001600160a01b0390911681526020016102a4565b6103b26103ad3660046148da565b610f6d565b6040516102a4929190614976565b6103d36103ce36600461466d565b6110f0565b6040516102a491906149d6565b6103877f000000000000000000000000000000000000000000000000000000000000000081565b61041a6104153660046149e9565b611117565b6040516102a49190614a2f565b6102c0610435366004614a7b565b6111c1565b6102c0610448366004614b01565b61127d565b61041a61045b366004614b63565b6113bc565b6102c061046e366004614bb2565b611466565b6102c061156d565b6102f5610489366004614be7565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102a4565b6104c36104be3660046148da565b61161f565b6040516001600160401b0390911681526020016102a4565b6102c06104e9366004614c22565b611790565b6102c06104fc366004614c56565b611b74565b6103d361050f36600461466d565b61210e565b6102c0612120565b6102d561052a3660046145d8565b612132565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6103877f000000000000000000000000000000000000000000000000000000000000000081565b61059061058b366004614ca1565b612211565b6040516102a49190614ce8565b6033546001600160a01b0316610387565b61041a6105bc366004614cfb565b6122da565b6102c06105cf366004614d5a565b6123ca565b6104c36105e23660046148da565b61282f565b6102c06105f5366004614f0f565b61285f565b6104c36106083660046148da565b60a26020908152600092835260408084209091529082529020546001600160401b031681565b6102c061063c366004614f94565b6128cf565b6104a261064f36600461466d565b612c2d565b6102c0610662366004614b01565b612c3f565b61067a6106753660046145d8565b612d9d565b60408051921515835263ffffffff9091166020830152016102a4565b6104a26106a43660046145d8565b612e38565b6103d36106b7366004614fd9565b612e59565b6102c06106ca366004615006565b612e8b565b6102c06106dd3660046148da565b612fae565b6103877f000000000000000000000000000000000000000000000000000000000000000081565b6102c06107173660046145d8565b61304e565b6102c061072a3660046145bf565b6130c7565b604080516060810182526000808252602082018190529181018290529061075f85610759866131df565b85613244565b925050505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156107cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f39190615032565b61081057604051631d77d47760e21b815260040160405180910390fd5b60665481811681146108355760405163c61dca5d60e01b815260040160405180910390fd5b61083e826133b5565b5050565b6001600160a01b0381166000908152609d6020526040812060609190610867906133f2565b90506000816001600160401b0381111561088357610883614461565b6040519080825280602002602001820160405280156108c857816020015b60408051808201909152600080825260208201528152602001906001900390816108a15790505b50905060005b82811015610957576001600160a01b0385166000908152609d60205260409020610932906108fc90836133fc565b60408051808201909152600080825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b82828151811061094457610944615054565b60209081029190910101526001016108ce565b509392505050565b60208082015182516001600160a01b031660009081526098909252604082206109919163ffffffff9081169061340816565b92915050565b826109a181613420565b6109be5760405163932d94f760e01b815260040160405180910390fd5b60005b82811015610c3a5760006040518060400160405280876001600160a01b031681526020018686858181106109f7576109f7615054565b9050602002810190610a09919061506a565b610a1790602081019061508a565b63ffffffff168152509050610a63816020015163ffffffff1660986000896001600160a01b03166001600160a01b031681526020019081526020016000206134ce90919063ffffffff16565b610a8057604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610ad691906150a5565b60405180910390a16000610ae9826131df565b905060005b868685818110610b0057610b00615054565b9050602002810190610b12919061506a565b610b209060208101906150b3565b9050811015610c2f57610b97878786818110610b3e57610b3e615054565b9050602002810190610b50919061506a565b610b5e9060208101906150b3565b83818110610b6e57610b6e615054565b9050602002016020810190610b8391906145d8565b6000848152609960205260409020906134da565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610bcc57610bcc615054565b9050602002810190610bde919061506a565b610bec9060208101906150b3565b84818110610bfc57610bfc615054565b9050602002016020810190610c1191906145d8565b604051610c1f9291906150fc565b60405180910390a1600101610aee565b5050506001016109c1565b5050505050565b606083516001600160401b03811115610c5c57610c5c614461565b604051908082528060200260200182016040528015610c8f57816020015b6060815260200190600190039081610c7a5790505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b8152600401610ce2929190615122565b600060405180830381865afa158015610cff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d279190810190615147565b905060005b8551811015610f33576000868281518110610d4957610d49615054565b6020026020010151905085516001600160401b03811115610d6c57610d6c614461565b604051908082528060200260200182016040528015610d95578160200160208202803683370190505b50848381518110610da857610da8615054565b602002602001018190525060005b8651811015610f29576000878281518110610dd357610dd3615054565b6020908102919091018101516001600160a01b03808616600090815260a1845260408082209284168252919093528220909250610e0f906134ef565b9050806001600160401b0316600003610e29575050610f21565b6000610e36858d8561072f565b90508863ffffffff16816040015163ffffffff1611158015610e5f575060008160200151600f0b125b15610e8257610e7681600001518260200151613503565b6001600160401b031681525b8051600090610e9e906001600160401b03908116908516613518565b9050610ee581898981518110610eb657610eb6615054565b60200260200101518781518110610ecf57610ecf615054565b602002602001015161352d90919063ffffffff16565b898881518110610ef757610ef7615054565b60200260200101518681518110610f1057610f10615054565b602002602001018181525050505050505b600101610db6565b5050600101610d2c565b5050949350505050565b6001600160a01b038082166000908152609760205260408120549091168015610f665780610764565b5090919050565b6001600160a01b0382166000908152609d602052604081206060918291610f93906133f2565b90506000816001600160401b03811115610faf57610faf614461565b604051908082528060200260200182016040528015610ff457816020015b6040805180820190915260008082526020820152815260200190600190039081610fcd5790505b5090506000826001600160401b0381111561101157611011614461565b60405190808252806020026020018201604052801561105c57816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161102f5790505b50905060005b838110156110e1576001600160a01b0388166000908152609d60205260408120611090906108fc90846133fc565b9050808483815181106110a5576110a5615054565b60200260200101819052506110bb89828a61072f565b8383815181106110cd576110cd615054565b602090810291909101015250600101611062565b509093509150505b9250929050565b6060600061076460996000611104866131df565b8152602001908152602001600020613542565b6060600083516001600160401b0381111561113457611134614461565b60405190808252806020026020018201604052801561115d578160200160208202803683370190505b50905060005b84518110156109575761118f85828151811061118157611181615054565b60200260200101518561282f565b8282815181106111a1576111a1615054565b6001600160401b0390921660209283029190910190910152600101611163565b6066546000906001908116036111ea5760405163840a48d560e01b815260040160405180910390fd5b83821461120a576040516343714afd60e01b815260040160405180910390fd5b60005b848110156112745761126c8787878481811061122b5761122b615054565b905060200201602081019061124091906145d8565b86868581811061125257611252615054565b9050602002016020810190611267919061525b565b61354f565b60010161120d565b50505050505050565b8361128781613420565b6112a45760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290526000938452609890529390912091926112e4929161340816565b61130157604051631fb1705560e21b815260040160405180910390fd5b600061130c826131df565b905060005b848110156113b25761132e868683818110610b6e57610b6e615054565b61134b5760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b8387878481811061137f5761137f615054565b905060200201602081019061139491906145d8565b6040516113a29291906150fc565b60405180910390a1600101611311565b5050505050505050565b6060600082516001600160401b038111156113d9576113d9614461565b604051908082528060200260200182016040528015611402578160200160208202803683370190505b50905060005b8351811015610957576114348585838151811061142757611427615054565b602002602001015161282f565b82828151811061144657611446615054565b6001600160401b0390921660209283029190910190910152600101611408565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115635761149f82613420565b6114bc576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115469190615032565b611563576040516325ec6c1f60e01b815260040160405180910390fd5b61083e8282613658565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190615032565b61161257604051631d77d47760e21b815260040160405180910390fd5b61161d6000196133b5565b565b6001600160a01b03828116600081815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b0390911690600f81810b600160801b909204900b03825b8181101561174c576001600160a01b03808716600090815260a36020908152604080832093891683529290529081206116b390836137fb565b6001600160a01b03888116600090815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561172f57505061174c565b61173d858260200151613503565b9450505080600101905061167a565b506001600160a01b03808616600090815260a160209081526040808320938816835292905220829061177d906134ef565b6117879190615295565b95945050505050565b6066546002906004908116036117b95760405163840a48d560e01b815260040160405180910390fd5b6117ce6117c960208401846145d8565b613420565b806117e757506117e76117c960408401602085016145d8565b611804576040516348f5c3ed60e01b815260040160405180910390fd5b60005b61181460408401846150b3565b9050811015611ae6576000604051806040016040528085602001602081019061183d91906145d8565b6001600160a01b0316815260200161185860408701876150b3565b8581811061186857611868615054565b905060200201602081019061187d919061508a565b63ffffffff1681525090506118cc816020015163ffffffff16609860008760200160208101906118ad91906145d8565b6001600160a01b03168152602081019190915260400160002090613408565b6118e957604051631fb1705560e21b815260040160405180910390fd5b609e60006118fa60208701876145d8565b6001600160a01b03166001600160a01b031681526020019081526020016000206000611925836131df565b815260208101919091526040016000205460ff16611956576040516325131d4f60e01b815260040160405180910390fd5b611992611962826131df565b609c600061197360208901896145d8565b6001600160a01b0316815260208101919091526040016000209061386c565b506119cc6119a360208601866145d8565b609a60006119b0856131df565b815260200190815260200160002061387890919063ffffffff16565b506119da60208501856145d8565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611a1291906150a5565b60405180910390a2604080518082019091526000815260208101611a567f0000000000000000000000000000000000000000000000000000000000000000436152b4565b63ffffffff169052609e6000611a6f60208801886145d8565b6001600160a01b03166001600160a01b031681526020019081526020016000206000611a9a846131df565b815260208082019290925260400160002082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611807565b50611afa61038260408401602085016145d8565b6001600160a01b0316639d8e0c23611b1560208501856145d8565b611b2260408601866150b3565b6040518463ffffffff1660e01b8152600401611b409392919061530b565b600060405180830381600087803b158015611b5a57600080fd5b505af1925050508015611b6b575060015b1561083e575050565b606654600190600290811603611b9d5760405163840a48d560e01b815260040160405180910390fd5b611ba683613420565b611bc3576040516348f5c3ed60e01b815260040160405180910390fd5b81604001356000108015611be35750670de0b6b3a7640000604083013511155b611c0057604051631353603160e01b815260040160405180910390fd5b60006040518060400160405280856001600160a01b03168152602001846020016020810190611c2f919061508a565b63ffffffff16905290506000611c51611c4b60208601866145d8565b8361388d565b60208084015184516001600160a01b0316600090815260989092526040909120919250611c88919063ffffffff9081169061340816565b611ca557604051631fb1705560e21b815260040160405180910390fd5b80611cc3576040516325131d4f60e01b815260040160405180910390fd5b6000611ce860996000611cd5866131df565b81526020019081526020016000206133f2565b90506000816001600160401b03811115611d0457611d04614461565b604051908082528060200260200182016040528015611d2d578160200160208202803683370190505b5090506000826001600160401b03811115611d4a57611d4a614461565b604051908082528060200260200182016040528015611d73578160200160208202803683370190505b50905060005b838110156120ab576000611db08260996000611d948b6131df565b81526020019081526020016000206133fc90919063ffffffff16565b9050600080611dce611dc560208d018d6145d8565b6107598b6131df565b9150915082868581518110611de557611de5615054565b6001600160a01b039092166020928302919091019091015280516001600160401b0316600003611e17575050506120a3565b8051600090611e33906001600160401b031660408e0135613904565b8351909150600090611e51906001600160401b038085169116613518565b905080878781518110611e6657611e66615054565b60209081029190910101528351835183908590611e84908390615295565b6001600160401b0316905250845183908690611ea1908390615295565b6001600160401b0316905250602085018051849190611ec1908390615295565b6001600160401b031690525060208401516000600f9190910b1215611f9b576000611f078f604001358660200151611ef890615330565b6001600160801b031690613904565b9050806001600160401b031685602001818151611f249190615356565b915090600f0b9081600f0b815250507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8f6000016020810190611f6791906145d8565b8e89611f7b89600001518a60200151613503565b8960400151604051611f91959493929190615383565b60405180910390a1505b611fc28e6000016020810190611fb191906145d8565b611fba8e6131df565b88888861391b565b611fe18e6000016020810190611fd891906145d8565b86518890613b91565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee74937f8f600001602081019061202391906145d8565b875160405160e084901b6001600160e01b03191681526001600160a01b039283166004820152918a1660248301526001600160401b038086166044840152166064820152608401600060405180830381600087803b15801561208457600080fd5b505af1158015612098573d6000803e3d6000fd5b505050505050505050505b600101611d79565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56120da60208901896145d8565b8684846120ea60608d018d6153d4565b6040516120fc96959493929190615443565b60405180910390a15050505050505050565b6060610991609a6000611104856131df565b612128613c14565b61161d6000613c6e565b6001600160a01b0381166000908152609c6020526040812060609190612157906133f2565b90506000816001600160401b0381111561217357612173614461565b6040519080825280602002602001820160405280156121b857816020015b60408051808201909152600080825260208201528152602001906001900390816121915790505b50905060005b82811015610957576001600160a01b0385166000908152609c602052604090206121ec906108fc90836133fc565b8282815181106121fe576121fe615054565b60209081029190910101526001016121be565b6060600084516001600160401b0381111561222e5761222e614461565b60405190808252806020026020018201604052801561227957816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161224c5790505b50905060005b85518110156122d1576122ac86828151811061229d5761229d615054565b6020026020010151868661072f565b8282815181106122be576122be615054565b602090810291909101015260010161227f565b50949350505050565b6060600083516001600160401b038111156122f7576122f7614461565b604051908082528060200260200182016040528015612320578160200160208202803683370190505b50905060005b84518110156122d1576001600160a01b038616600090815260a16020526040812086516123989287929189908690811061236257612362615054565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020613cc090919063ffffffff16565b8282815181106123aa576123aa615054565b6001600160401b0390921660209283029190910190910152600101612326565b6066546000906001908116036123f35760405163840a48d560e01b815260040160405180910390fd5b6123fc83613420565b612419576040516348f5c3ed60e01b815260040160405180910390fd5b600080600061242786612d9d565b91509150816124495760405163fa55fc8160e01b815260040160405180910390fd5b9150600090505b8351811015610c3a5783818151811061246b5761246b615054565b6020026020010151604001515184828151811061248a5761248a615054565b60200260200101516020015151146124b5576040516343714afd60e01b815260040160405180910390fd5b60008482815181106124c9576124c9615054565b602090810291909101810151518082015181516001600160a01b031660009081526098909352604090922090925061250a9163ffffffff9081169061340816565b61252757604051631fb1705560e21b815260040160405180910390fd5b6000612533878361388d565b905060005b86848151811061254a5761254a615054565b6020026020010151602001515181101561282457600087858151811061257257612572615054565b602002602001015160200151828151811061258f5761258f615054565b602002602001015190506125a6898261ffff61354f565b6000806125b68b610759886131df565b915091508060200151600f0b6000146125e257604051630d8fcbe360e41b815260040160405180910390fd5b60006125f087858489613cd5565b905061263682600001518c8a8151811061260c5761260c615054565b602002602001015160400151878151811061262957612629615054565b6020026020010151613d42565b600f0b6020830181905260000361266057604051634606179360e11b815260040160405180910390fd5b60008260200151600f0b121561279157801561271e576126e4612682886131df565b6001600160a01b03808f16600090815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61270e7f0000000000000000000000000000000000000000000000000000000000000000436152b4565b63ffffffff1660408301526127ff565b61273083602001518360200151613503565b6001600160401b031660208401528a518b908990811061275257612752615054565b602002602001015160400151858151811061276f5761276f615054565b6020908102919091018101516001600160401b031683526000908301526127ff565b60008260200151600f0b13156127ff576127b383602001518360200151613503565b6001600160401b0390811660208501819052845190911610156127e957604051636c9be0bf60e01b815260040160405180910390fd5b6127f389436152b4565b63ffffffff1660408301525b6128148c61280c896131df565b86868661391b565b5050600190920191506125389050565b505050600101612450565b6001600160a01b03808316600090815260a1602090815260408083209385168352929052908120610764906134ef565b8261286981613420565b6128865760405163932d94f760e01b815260040160405180910390fd5b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516128c19291906154a6565b60405180910390a250505050565b6066546002906004908116036128f85760405163840a48d560e01b815260040160405180910390fd5b8261290281613420565b61291f5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a99190615032565b6129c65760405163ccea9e6f60e01b815260040160405180910390fd5b60005b6129d660208501856150b3565b9050811015612ba55760408051808201909152600090806129fa60208801886145d8565b6001600160a01b03168152602001868060200190612a1891906150b3565b85818110612a2857612a28615054565b9050602002016020810190612a3d919061508a565b63ffffffff90811690915260208083015183516001600160a01b0316600090815260989092526040909120929350612a7a92919081169061340816565b612a9757604051631fb1705560e21b815260040160405180910390fd5b612aa1868261388d565b15612abf57604051636c6c6e2760e11b815260040160405180910390fd5b612ae9612acb826131df565b6001600160a01b0388166000908152609c60205260409020906134ce565b50612b1786609a6000612afb856131df565b81526020019081526020016000206134da90919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612b5191906150a5565b60405180910390a26001600160a01b0386166000908152609e60205260408120600191612b7d846131df565b81526020810191909152604001600020805460ff1916911515919091179055506001016129c9565b50612bb661038260208501856145d8565b6001600160a01b031663adcf73f785612bd260208701876150b3565b612bdf60408901896153d4565b6040518663ffffffff1660e01b8152600401612bff9594939291906154ba565b600060405180830381600087803b158015612c1957600080fd5b505af11580156113b2573d6000803e3d6000fd5b6000610991609a6000611cd5856131df565b83612c4981613420565b612c665760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff8088166020808501829052600093845260989052939091209192612ca6929161340816565b612cc357604051631fb1705560e21b815260040160405180910390fd5b6000612cce826131df565b905060005b848110156113b257612d19868683818110612cf057612cf0615054565b9050602002016020810190612d0591906145d8565b600084815260996020526040902090613878565b612d36576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612d6a57612d6a615054565b9050602002016020810190612d7f91906145d8565b604051612d8d9291906150fc565b60405180910390a1600101612cd3565b6001600160a01b0381166000908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612e1f5750826060015163ffffffff164310155b15612e2e575050604081015160015b9590945092505050565b6001600160a01b0381166000908152609860205260408120610991906133f2565b6001600160a01b0382166000908152609f6020526040812060609190612e839082611104866131df565b949350505050565b600054610100900460ff1615808015612eab5750600054600160ff909116105b80612ec55750303b158015612ec5575060005460ff166001145b612f2d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015612f50576000805461ff0019166101001790555b612f59826133b5565b612f6283613c6e565b8015612fa9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b81612fb881613420565b612fd55760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b03838116600090815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361302e81610f3d565b604080516001600160a01b03938416815292909116602083015201612fa0565b613056613c14565b6001600160a01b0381166130bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612f24565b6130c481613c6e565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314991906154fe565b6001600160a01b0316336001600160a01b03161461317a5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146131a15760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60008160000151826020015163ffffffff1660405160200161322c92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526109919061551b565b604080518082018252600080825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906132a5906134ef565b6001600160401b0390811682526001600160a01b03898116600081815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156133485790925090506133ad565b61335a81600001518260200151613503565b6001600160401b0316815260208101516000600f9190910b12156133995761338a82602001518260200151613503565b6001600160401b031660208301525b600060408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6000610991825490565b60006107648383613d5a565b60008181526001830160205260408120541515610764565b604051631beb2b9760e31b81526001600160a01b038281166004830152336024830152306044830152600080356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303816000875af11580156134aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109919190615032565b60006107648383613d84565b6000610764836001600160a01b038416613d84565b600061099182670de0b6b3a7640000613dd3565b6000610764826001600160401b038516615356565b600061076483670de0b6b3a764000084613e19565b60006107648383670de0b6b3a7640000613e19565b6060600061076483613f03565b6001600160a01b03838116600090815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b60008111801561359b57508261ffff1682105b15610c3a576001600160a01b03808616600090815260a36020908152604080832093881683529290529081206135d090613f5f565b90506000806135e0888489613244565b91509150806040015163ffffffff164310156135fe57505050610c3a565b61360b888489858561391b565b6001600160a01b03808916600090815260a360209081526040808320938b1683529290522061363990613fb3565b506136438561553f565b945061364e84615558565b9350505050613588565b6001600160a01b0382166000908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b9092041660608201819052158015906136d55750806060015163ffffffff164310155b156136ef57604081015163ffffffff168152600160208201525b63ffffffff821660408201526137257f0000000000000000000000000000000000000000000000000000000000000000436152b4565b63ffffffff90811660608381019182526001600160a01b0386166000818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101612fa0565b60008061381e61380a84614032565b85546138199190600f0b61556f565b6140a0565b8454909150600160801b9004600f90810b9082900b1261385157604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b60006107648383614109565b6000610764836001600160a01b038416614109565b6001600160a01b0382166000908152609e602052604081208190816138b1856131df565b8152602080820192909252604090810160002081518083019092525460ff8116151580835261010090910463ffffffff1692820192909252915080612e8357506020015163ffffffff1643109392505050565b60006107648383670de0b6b3a764000060016141fc565b602082810180516001600160a01b03888116600081815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a16001600160a01b03858116600090815260a060209081526040808320888452825280832093871683529281528282208451815486840151878701516001600160401b039093166001600160c01b031990921691909117600160401b6001600160801b03909216919091021763ffffffff60c01b1916600160c01b63ffffffff9283160217909155835180850185528381528201929092528251808401909352606087901c8352908616908201527f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd9086908351604051613a8993929188914390615383565b60405180910390a16020810151600f0b15613af4576001600160a01b0385166000908152609f602090815260408083208784529091529020613acb90846134da565b506001600160a01b0385166000908152609d60205260409020613aee90856134ce565b50610c3a565b80516001600160401b0316600003610c3a576001600160a01b0385166000908152609f602090815260408083208784529091529020613b339084613878565b506001600160a01b0385166000908152609f602090815260408083208784529091529020613b60906133f2565b600003610c3a576001600160a01b0385166000908152609d60205260409020613b89908561386c565b505050505050565b6001600160a01b03808416600090815260a160209081526040808320938616835292905220613bc1904383614257565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612fa0565b6033546001600160a01b0316331461161d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612f24565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006107648383670de0b6b3a764000061426b565b6000613d048460996000613ce8896131df565b81526020019081526020016000206142b490919063ffffffff16565b613d1057506000612e83565b81613d1d57506000612e83565b82516001600160401b0316600003613d3757506000612e83565b506001949350505050565b60006107646001600160401b03808516908416615597565b6000826000018281548110613d7157613d71615054565b9060005260206000200154905092915050565b6000818152600183016020526040812054613dcb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610991565b506000610991565b81546000908015613e1157613dfb84613ded6001846155c4565b600091825260209091200190565b54600160201b90046001600160e01b0316612e83565b509092915050565b6000808060001985870985870292508281108382030391505080600003613e5357838281613e4957613e496155d7565b0492505050610764565b808411613e9a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612f24565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015613f5357602002820191906000526020600020905b815481526020019060010190808311613f3f575b50505050509050919050565b6000613f7a8254600f81810b600160801b909204900b131590565b15613f9857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b6000613fce8254600f81810b600160801b909204900b131590565b15613fec57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60006001600160ff1b0382111561409c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612f24565b5090565b80600f81900b81146141045760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612f24565b919050565b600081815260018301602052604081205480156141f257600061412d6001836155c4565b8554909150600090614141906001906155c4565b90508181146141a657600086600001828154811061416157614161615054565b906000526020600020015490508087600001848154811061418457614184615054565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806141b7576141b76155ed565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610991565b6000915050610991565b60008061420a868686613e19565b9050600183600281111561422057614220615603565b14801561423d575060008480614238576142386155d7565b868809115b156117875761424d600182615619565b9695505050505050565b612fa983836001600160401b0384166142d6565b82546000908161427d868683856143db565b905080156142aa5761429486613ded6001846155c4565b54600160201b90046001600160e01b031661075f565b5091949350505050565b6001600160a01b03811660009081526001830160205260408120541515610764565b8254801561438d5760006142ef85613ded6001856155c4565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156143415760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff80861691160361438b578261436286613ded6001866155c4565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187556000968752952091519051909216600160201b029190921617910155565b60005b818310156109575760006143f28484614431565b60008781526020902090915063ffffffff86169082015463ffffffff16111561441d5780925061442b565b614428816001615619565b93505b506143de565b6000614440600284841861562c565b61076490848416615619565b6001600160a01b03811681146130c457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561449957614499614461565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144c7576144c7614461565b604052919050565b803563ffffffff8116811461410457600080fd5b6000604082840312156144f557600080fd5b604080519081016001600160401b038111828210171561451757614517614461565b60405290508082356145288161444c565b8152614536602084016144cf565b60208201525092915050565b60008060006080848603121561455757600080fd5b83356145628161444c565b925061457185602086016144e3565b915060608401356145818161444c565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff169082015260608101610991565b6000602082840312156145d157600080fd5b5035919050565b6000602082840312156145ea57600080fd5b81356107648161444c565b80516001600160a01b0316825260209081015163ffffffff16910152565b600081518084526020840193506020830160005b828110156146505761463a8683516145f5565b6040959095019460209190910190600101614627565b5093949350505050565b6020815260006107646020830184614613565b60006040828403121561467f57600080fd5b61076483836144e3565b60008083601f84011261469b57600080fd5b5081356001600160401b038111156146b257600080fd5b6020830191508360208260051b85010111156110e957600080fd5b6000806000604084860312156146e257600080fd5b83356146ed8161444c565b925060208401356001600160401b0381111561470857600080fd5b61471486828701614689565b9497909650939450505050565b60006001600160401b0382111561473a5761473a614461565b5060051b60200190565b600082601f83011261475557600080fd5b813561476861476382614721565b61449f565b8082825260208201915060208360051b86010192508583111561478a57600080fd5b602085015b838110156147b05780356147a28161444c565b83526020928301920161478f565b5095945050505050565b60008060008060a085870312156147d057600080fd5b6147da86866144e3565b935060408501356001600160401b038111156147f557600080fd5b61480187828801614744565b93505060608501356001600160401b0381111561481d57600080fd5b61482987828801614744565b925050614838608086016144cf565b905092959194509250565b600081518084526020840193506020830160005b82811015614650578151865260209586019590910190600101614857565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156148ce57603f198786030184526148b9858351614843565b9450602093840193919091019060010161489d565b50929695505050505050565b600080604083850312156148ed57600080fd5b82356148f88161444c565b915060208301356149088161444c565b809150509250929050565b600081518084526020840193506020830160005b828110156146505761496086835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614927565b6040815260006149896040830185614613565b82810360208401526117878185614913565b600081518084526020840193506020830160005b828110156146505781516001600160a01b03168652602095860195909101906001016149af565b602081526000610764602083018461499b565b600080604083850312156149fc57600080fd5b82356001600160401b03811115614a1257600080fd5b614a1e85828601614744565b92505060208301356149088161444c565b602080825282518282018190526000918401906040840190835b81811015614a705783516001600160401b0316835260209384019390920191600101614a49565b509095945050505050565b600080600080600060608688031215614a9357600080fd5b8535614a9e8161444c565b945060208601356001600160401b03811115614ab957600080fd5b614ac588828901614689565b90955093505060408601356001600160401b03811115614ae457600080fd5b614af088828901614689565b969995985093965092949392505050565b60008060008060608587031215614b1757600080fd5b8435614b228161444c565b9350614b30602086016144cf565b925060408501356001600160401b03811115614b4b57600080fd5b614b5787828801614689565b95989497509550505050565b60008060408385031215614b7657600080fd5b8235614b818161444c565b915060208301356001600160401b03811115614b9c57600080fd5b614ba885828601614744565b9150509250929050565b60008060408385031215614bc557600080fd5b8235614bd08161444c565b9150614bde602084016144cf565b90509250929050565b600060208284031215614bf957600080fd5b813560ff8116811461076457600080fd5b600060608284031215614c1c57600080fd5b50919050565b600060208284031215614c3457600080fd5b81356001600160401b03811115614c4a57600080fd5b612e8384828501614c0a565b60008060408385031215614c6957600080fd5b8235614c748161444c565b915060208301356001600160401b03811115614c8f57600080fd5b83016080818603121561490857600080fd5b600080600060808486031215614cb657600080fd5b83356001600160401b03811115614ccc57600080fd5b614cd886828701614744565b93505061457185602086016144e3565b6020815260006107646020830184614913565b600080600060608486031215614d1057600080fd5b8335614d1b8161444c565b925060208401356001600160401b03811115614d3657600080fd5b614d4286828701614744565b925050614d51604085016144cf565b90509250925092565b60008060408385031215614d6d57600080fd5b8235614d788161444c565b915060208301356001600160401b03811115614d9357600080fd5b8301601f81018513614da457600080fd5b8035614db261476382614721565b8082825260208201915060208360051b850101925087831115614dd457600080fd5b602084015b83811015614f005780356001600160401b03811115614df757600080fd5b85016080818b03601f19011215614e0d57600080fd5b614e15614477565b614e228b602084016144e3565b815260608201356001600160401b03811115614e3d57600080fd5b614e4c8c602083860101614744565b60208301525060808201356001600160401b03811115614e6b57600080fd5b6020818401019250508a601f830112614e8357600080fd5b8135614e9161476382614721565b8082825260208201915060208360051b86010192508d831115614eb357600080fd5b6020850194505b82851015614eea5784356001600160401b0381168114614ed957600080fd5b825260209485019490910190614eba565b6040840152505084525060209283019201614dd9565b50809450505050509250929050565b600080600060408486031215614f2457600080fd5b8335614f2f8161444c565b925060208401356001600160401b03811115614f4a57600080fd5b8401601f81018613614f5b57600080fd5b80356001600160401b03811115614f7157600080fd5b866020828401011115614f8357600080fd5b939660209190910195509293505050565b60008060408385031215614fa757600080fd5b8235614fb28161444c565b915060208301356001600160401b03811115614fcd57600080fd5b614ba885828601614c0a565b60008060608385031215614fec57600080fd5b8235614ff78161444c565b9150614bde84602085016144e3565b6000806040838503121561501957600080fd5b82356150248161444c565b946020939093013593505050565b60006020828403121561504457600080fd5b8151801515811461076457600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261508057600080fd5b9190910192915050565b60006020828403121561509c57600080fd5b610764826144cf565b6040810161099182846145f5565b6000808335601e198436030181126150ca57600080fd5b8301803591506001600160401b038211156150e457600080fd5b6020019150600581901b36038213156110e957600080fd5b6060810161510a82856145f5565b6001600160a01b039290921660409190910152919050565b604081526000615135604083018561499b565b8281036020840152611787818561499b565b60006020828403121561515957600080fd5b81516001600160401b0381111561516f57600080fd5b8201601f8101841361518057600080fd5b805161518e61476382614721565b8082825260208201915060208360051b8501019250868311156151b057600080fd5b602084015b838110156152505780516001600160401b038111156151d357600080fd5b8501603f810189136151e457600080fd5b60208101516151f561476382614721565b808282526020820191506020808460051b8601010192508b83111561521957600080fd5b6040840193505b8284101561523b578351825260209384019390910190615220565b865250506020938401939190910190506151b5565b509695505050505050565b60006020828403121561526d57600080fd5b813561ffff8116811461076457600080fd5b634e487b7160e01b600052601160045260246000fd5b6001600160401b0382811682821603908111156109915761099161527f565b63ffffffff81811683821601908111156109915761099161527f565b81835260208301925060008160005b848110156146505763ffffffff6152f5836144cf565b16865260209586019591909101906001016152df565b6001600160a01b038416815260406020820181905260009061178790830184866152d0565b600081600f0b60016001607f1b0319810361534d5761534d61527f565b60000392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156109915761099161527f565b6001600160a01b038616815260c081016153a060208301876145f5565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b6000808335601e198436030181126153eb57600080fd5b8301803591506001600160401b0382111561540557600080fd5b6020019150368190038213156110e957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038716815261545c60208201876145f5565b60c06060820152600061547260c083018761499b565b82810360808401526154848187614843565b905082810360a084015261549981858761541a565b9998505050505050505050565b602081526000612e8360208301848661541a565b6001600160a01b03861681526060602082018190526000906154df90830186886152d0565b82810360408401526154f281858761541a565b98975050505050505050565b60006020828403121561551057600080fd5b81516107648161444c565b80516020808301519190811015614c1c5760001960209190910360031b1b16919050565b6000600182016155515761555161527f565b5060010190565b6000816155675761556761527f565b506000190190565b808201828112600083128015821682158216171561558f5761558f61527f565b505092915050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156109915761099161527f565b818103818111156109915761099161527f565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b808201808211156109915761099161527f565b60008261564957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220054ebe525928c3db5e5ce7106d82ced5a83085c561431f986df0d04881b576a364736f6c634300081b0033", } // ContractAllocationManagerABI is the input ABI used to generate the binding from. @@ -92,7 +92,7 @@ var ContractAllocationManagerABI = ContractAllocationManagerMetaData.ABI var ContractAllocationManagerBin = ContractAllocationManagerMetaData.Bin // DeployContractAllocationManager deploys a new Ethereum contract, binding an instance of ContractAllocationManager to it. -func DeployContractAllocationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _pauserRegistry common.Address, _DEALLOCATION_DELAY uint32, _ALLOCATION_CONFIGURATION_DELAY uint32) (common.Address, *types.Transaction, *ContractAllocationManager, error) { +func DeployContractAllocationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _pauserRegistry common.Address, _permissionController common.Address, _DEALLOCATION_DELAY uint32, _ALLOCATION_CONFIGURATION_DELAY uint32) (common.Address, *types.Transaction, *ContractAllocationManager, error) { parsed, err := ContractAllocationManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -101,7 +101,7 @@ func DeployContractAllocationManager(auth *bind.TransactOpts, backend bind.Contr return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractAllocationManagerBin), backend, _delegation, _pauserRegistry, _DEALLOCATION_DELAY, _ALLOCATION_CONFIGURATION_DELAY) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractAllocationManagerBin), backend, _delegation, _pauserRegistry, _permissionController, _DEALLOCATION_DELAY, _ALLOCATION_CONFIGURATION_DELAY) if err != nil { return common.Address{}, nil, nil, err } @@ -153,6 +153,8 @@ type ContractAllocationManagerCalls interface { GetMinimumSlashableStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) + GetOperatorSetCount(opts *bind.CallOpts, avs common.Address) (*big.Int, error) + GetRegisteredSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) GetStrategiesInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) @@ -168,45 +170,45 @@ type ContractAllocationManagerCalls interface { Paused0(opts *bind.CallOpts) (*big.Int, error) PauserRegistry(opts *bind.CallOpts) (common.Address, error) + + PermissionController(opts *bind.CallOpts) (common.Address, error) } // ContractAllocationManagerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractAllocationManagerTransacts interface { - AddStrategiesToOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) + AddStrategiesToOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) ClearDeallocationQueue(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) - CreateOperatorSets(opts *bind.TransactOpts, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) + CreateOperatorSets(opts *bind.TransactOpts, avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) DeregisterFromOperatorSets(opts *bind.TransactOpts, params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) - ModifyAllocations(opts *bind.TransactOpts, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) + ModifyAllocations(opts *bind.TransactOpts, operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) - RegisterForOperatorSets(opts *bind.TransactOpts, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) + RegisterForOperatorSets(opts *bind.TransactOpts, operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) - RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) + RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) - SetAVSRegistrar(opts *bind.TransactOpts, registrar common.Address) (*types.Transaction, error) + SetAVSRegistrar(opts *bind.TransactOpts, avs common.Address, registrar common.Address) (*types.Transaction, error) SetAllocationDelay(opts *bind.TransactOpts, operator common.Address, delay uint32) (*types.Transaction, error) - SetAllocationDelay0(opts *bind.TransactOpts, delay uint32) (*types.Transaction, error) - - SlashOperator(opts *bind.TransactOpts, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) + SlashOperator(opts *bind.TransactOpts, avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) - UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) + UpdateAVSMetadataURI(opts *bind.TransactOpts, avs common.Address, metadataURI string) (*types.Transaction, error) } // ContractAllocationManagerFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. @@ -989,6 +991,37 @@ func (_ContractAllocationManager *ContractAllocationManagerCallerSession) GetMin return _ContractAllocationManager.Contract.GetMinimumSlashableStake(&_ContractAllocationManager.CallOpts, operatorSet, operators, strategies, futureBlock) } +// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5. +// +// Solidity: function getOperatorSetCount(address avs) view returns(uint256) +func (_ContractAllocationManager *ContractAllocationManagerCaller) GetOperatorSetCount(opts *bind.CallOpts, avs common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractAllocationManager.contract.Call(opts, &out, "getOperatorSetCount", avs) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5. +// +// Solidity: function getOperatorSetCount(address avs) view returns(uint256) +func (_ContractAllocationManager *ContractAllocationManagerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) { + return _ContractAllocationManager.Contract.GetOperatorSetCount(&_ContractAllocationManager.CallOpts, avs) +} + +// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5. +// +// Solidity: function getOperatorSetCount(address avs) view returns(uint256) +func (_ContractAllocationManager *ContractAllocationManagerCallerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) { + return _ContractAllocationManager.Contract.GetOperatorSetCount(&_ContractAllocationManager.CallOpts, avs) +} + // GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd. // // Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[]) @@ -1238,25 +1271,56 @@ func (_ContractAllocationManager *ContractAllocationManagerCallerSession) Pauser return _ContractAllocationManager.Contract.PauserRegistry(&_ContractAllocationManager.CallOpts) } -// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x76999342. +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_ContractAllocationManager *ContractAllocationManagerCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractAllocationManager.contract.Call(opts, &out, "permissionController") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_ContractAllocationManager *ContractAllocationManagerSession) PermissionController() (common.Address, error) { + return _ContractAllocationManager.Contract.PermissionController(&_ContractAllocationManager.CallOpts) +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. // -// Solidity: function addStrategiesToOperatorSet(uint32 operatorSetId, address[] strategies) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) AddStrategiesToOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "addStrategiesToOperatorSet", operatorSetId, strategies) +// Solidity: function permissionController() view returns(address) +func (_ContractAllocationManager *ContractAllocationManagerCallerSession) PermissionController() (common.Address, error) { + return _ContractAllocationManager.Contract.PermissionController(&_ContractAllocationManager.CallOpts) } -// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x76999342. +// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20. // -// Solidity: function addStrategiesToOperatorSet(uint32 operatorSetId, address[] strategies) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) AddStrategiesToOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.AddStrategiesToOperatorSet(&_ContractAllocationManager.TransactOpts, operatorSetId, strategies) +// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) AddStrategiesToOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "addStrategiesToOperatorSet", avs, operatorSetId, strategies) } -// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x76999342. +// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20. // -// Solidity: function addStrategiesToOperatorSet(uint32 operatorSetId, address[] strategies) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) AddStrategiesToOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.AddStrategiesToOperatorSet(&_ContractAllocationManager.TransactOpts, operatorSetId, strategies) +// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.AddStrategiesToOperatorSet(&_ContractAllocationManager.TransactOpts, avs, operatorSetId, strategies) +} + +// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20. +// +// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.AddStrategiesToOperatorSet(&_ContractAllocationManager.TransactOpts, avs, operatorSetId, strategies) } // ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef. @@ -1280,25 +1344,25 @@ func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) Cl return _ContractAllocationManager.Contract.ClearDeallocationQueue(&_ContractAllocationManager.TransactOpts, operator, strategies, numToClear) } -// CreateOperatorSets is a paid mutator transaction binding the contract method 0x847d634f. +// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0. // -// Solidity: function createOperatorSets((uint32,address[])[] params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) CreateOperatorSets(opts *bind.TransactOpts, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "createOperatorSets", params) +// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) CreateOperatorSets(opts *bind.TransactOpts, avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "createOperatorSets", avs, params) } -// CreateOperatorSets is a paid mutator transaction binding the contract method 0x847d634f. +// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0. // -// Solidity: function createOperatorSets((uint32,address[])[] params) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) CreateOperatorSets(params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.CreateOperatorSets(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.CreateOperatorSets(&_ContractAllocationManager.TransactOpts, avs, params) } -// CreateOperatorSets is a paid mutator transaction binding the contract method 0x847d634f. +// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0. // -// Solidity: function createOperatorSets((uint32,address[])[] params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) CreateOperatorSets(params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.CreateOperatorSets(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.CreateOperatorSets(&_ContractAllocationManager.TransactOpts, avs, params) } // DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5. @@ -1343,25 +1407,25 @@ func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) In return _ContractAllocationManager.Contract.Initialize(&_ContractAllocationManager.TransactOpts, initialOwner, initialPausedStatus) } -// ModifyAllocations is a paid mutator transaction binding the contract method 0x15ea7917. +// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee. // -// Solidity: function modifyAllocations(((address,uint32),address[],uint64[])[] params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) ModifyAllocations(opts *bind.TransactOpts, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "modifyAllocations", params) +// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) ModifyAllocations(opts *bind.TransactOpts, operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "modifyAllocations", operator, params) } -// ModifyAllocations is a paid mutator transaction binding the contract method 0x15ea7917. +// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee. // -// Solidity: function modifyAllocations(((address,uint32),address[],uint64[])[] params) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) ModifyAllocations(params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.ModifyAllocations(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.ModifyAllocations(&_ContractAllocationManager.TransactOpts, operator, params) } -// ModifyAllocations is a paid mutator transaction binding the contract method 0x15ea7917. +// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee. // -// Solidity: function modifyAllocations(((address,uint32),address[],uint64[])[] params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) ModifyAllocations(params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.ModifyAllocations(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.ModifyAllocations(&_ContractAllocationManager.TransactOpts, operator, params) } // Pause is a paid mutator transaction binding the contract method 0x136439dd. @@ -1406,46 +1470,46 @@ func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) Pa return _ContractAllocationManager.Contract.PauseAll(&_ContractAllocationManager.TransactOpts) } -// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xb92f60a5. +// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9. // -// Solidity: function registerForOperatorSets((address,uint32[],bytes) params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) RegisterForOperatorSets(opts *bind.TransactOpts, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "registerForOperatorSets", params) +// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) RegisterForOperatorSets(opts *bind.TransactOpts, operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "registerForOperatorSets", operator, params) } -// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xb92f60a5. +// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9. // -// Solidity: function registerForOperatorSets((address,uint32[],bytes) params) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) RegisterForOperatorSets(params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.RegisterForOperatorSets(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.RegisterForOperatorSets(&_ContractAllocationManager.TransactOpts, operator, params) } -// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xb92f60a5. +// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9. // -// Solidity: function registerForOperatorSets((address,uint32[],bytes) params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) RegisterForOperatorSets(params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.RegisterForOperatorSets(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.RegisterForOperatorSets(&_ContractAllocationManager.TransactOpts, operator, params) } -// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xce7b5e4b. +// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989. // -// Solidity: function removeStrategiesFromOperatorSet(uint32 operatorSetId, address[] strategies) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "removeStrategiesFromOperatorSet", operatorSetId, strategies) +// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "removeStrategiesFromOperatorSet", avs, operatorSetId, strategies) } -// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xce7b5e4b. +// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989. // -// Solidity: function removeStrategiesFromOperatorSet(uint32 operatorSetId, address[] strategies) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) RemoveStrategiesFromOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_ContractAllocationManager.TransactOpts, operatorSetId, strategies) +// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_ContractAllocationManager.TransactOpts, avs, operatorSetId, strategies) } -// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xce7b5e4b. +// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989. // -// Solidity: function removeStrategiesFromOperatorSet(uint32 operatorSetId, address[] strategies) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) RemoveStrategiesFromOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_ContractAllocationManager.TransactOpts, operatorSetId, strategies) +// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_ContractAllocationManager.TransactOpts, avs, operatorSetId, strategies) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -1469,25 +1533,25 @@ func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) Re return _ContractAllocationManager.Contract.RenounceOwnership(&_ContractAllocationManager.TransactOpts) } -// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xf25f1610. +// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4. // -// Solidity: function setAVSRegistrar(address registrar) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) SetAVSRegistrar(opts *bind.TransactOpts, registrar common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "setAVSRegistrar", registrar) +// Solidity: function setAVSRegistrar(address avs, address registrar) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) SetAVSRegistrar(opts *bind.TransactOpts, avs common.Address, registrar common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "setAVSRegistrar", avs, registrar) } -// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xf25f1610. +// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4. // -// Solidity: function setAVSRegistrar(address registrar) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) SetAVSRegistrar(registrar common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.SetAVSRegistrar(&_ContractAllocationManager.TransactOpts, registrar) +// Solidity: function setAVSRegistrar(address avs, address registrar) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.SetAVSRegistrar(&_ContractAllocationManager.TransactOpts, avs, registrar) } -// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xf25f1610. +// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4. // -// Solidity: function setAVSRegistrar(address registrar) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) SetAVSRegistrar(registrar common.Address) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.SetAVSRegistrar(&_ContractAllocationManager.TransactOpts, registrar) +// Solidity: function setAVSRegistrar(address avs, address registrar) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.SetAVSRegistrar(&_ContractAllocationManager.TransactOpts, avs, registrar) } // SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6. @@ -1511,46 +1575,25 @@ func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) Se return _ContractAllocationManager.Contract.SetAllocationDelay(&_ContractAllocationManager.TransactOpts, operator, delay) } -// SetAllocationDelay0 is a paid mutator transaction binding the contract method 0x5c489bb5. -// -// Solidity: function setAllocationDelay(uint32 delay) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) SetAllocationDelay0(opts *bind.TransactOpts, delay uint32) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "setAllocationDelay0", delay) -} - -// SetAllocationDelay0 is a paid mutator transaction binding the contract method 0x5c489bb5. -// -// Solidity: function setAllocationDelay(uint32 delay) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) SetAllocationDelay0(delay uint32) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.SetAllocationDelay0(&_ContractAllocationManager.TransactOpts, delay) -} - -// SetAllocationDelay0 is a paid mutator transaction binding the contract method 0x5c489bb5. -// -// Solidity: function setAllocationDelay(uint32 delay) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) SetAllocationDelay0(delay uint32) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.SetAllocationDelay0(&_ContractAllocationManager.TransactOpts, delay) -} - -// SlashOperator is a paid mutator transaction binding the contract method 0x0ea43e43. +// SlashOperator is a paid mutator transaction binding the contract method 0x6e7d9fa8. // -// Solidity: function slashOperator((address,uint32,uint256,string) params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) SlashOperator(opts *bind.TransactOpts, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "slashOperator", params) +// Solidity: function slashOperator(address avs, (address,uint32,uint256,string) params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) SlashOperator(opts *bind.TransactOpts, avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "slashOperator", avs, params) } -// SlashOperator is a paid mutator transaction binding the contract method 0x0ea43e43. +// SlashOperator is a paid mutator transaction binding the contract method 0x6e7d9fa8. // -// Solidity: function slashOperator((address,uint32,uint256,string) params) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) SlashOperator(params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.SlashOperator(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function slashOperator(address avs, (address,uint32,uint256,string) params) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.SlashOperator(&_ContractAllocationManager.TransactOpts, avs, params) } -// SlashOperator is a paid mutator transaction binding the contract method 0x0ea43e43. +// SlashOperator is a paid mutator transaction binding the contract method 0x6e7d9fa8. // -// Solidity: function slashOperator((address,uint32,uint256,string) params) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) SlashOperator(params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.SlashOperator(&_ContractAllocationManager.TransactOpts, params) +// Solidity: function slashOperator(address avs, (address,uint32,uint256,string) params) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.SlashOperator(&_ContractAllocationManager.TransactOpts, avs, params) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. @@ -1595,25 +1638,25 @@ func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) Un return _ContractAllocationManager.Contract.Unpause(&_ContractAllocationManager.TransactOpts, newPausedStatus) } -// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821. // -// Solidity: function updateAVSMetadataURI(string metadataURI) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) { - return _ContractAllocationManager.contract.Transact(opts, "updateAVSMetadataURI", metadataURI) +// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, avs common.Address, metadataURI string) (*types.Transaction, error) { + return _ContractAllocationManager.contract.Transact(opts, "updateAVSMetadataURI", avs, metadataURI) } -// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821. // -// Solidity: function updateAVSMetadataURI(string metadataURI) returns() -func (_ContractAllocationManager *ContractAllocationManagerSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.UpdateAVSMetadataURI(&_ContractAllocationManager.TransactOpts, metadataURI) +// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns() +func (_ContractAllocationManager *ContractAllocationManagerSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.UpdateAVSMetadataURI(&_ContractAllocationManager.TransactOpts, avs, metadataURI) } -// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821. // -// Solidity: function updateAVSMetadataURI(string metadataURI) returns() -func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { - return _ContractAllocationManager.Contract.UpdateAVSMetadataURI(&_ContractAllocationManager.TransactOpts, metadataURI) +// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns() +func (_ContractAllocationManager *ContractAllocationManagerTransactorSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) { + return _ContractAllocationManager.Contract.UpdateAVSMetadataURI(&_ContractAllocationManager.TransactOpts, avs, metadataURI) } // ContractAllocationManagerAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the ContractAllocationManager contract. diff --git a/contracts/bindings/DelegationManager/binding.go b/contracts/bindings/DelegationManager/binding.go index c8836cfe..a6d6a349 100644 --- a/contracts/bindings/DelegationManager/binding.go +++ b/contracts/bindings/DelegationManager/binding.go @@ -29,13 +29,6 @@ var ( _ = abi.ConvertType ) -// IDelegationManagerTypesOperatorDetails is an auto generated low-level Go binding around an user-defined struct. -type IDelegationManagerTypesOperatorDetails struct { - DeprecatedEarningsReceiver common.Address - DelegationApprover common.Address - DeprecatedStakerOptOutWindowBlocks uint32 -} - // IDelegationManagerTypesQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. type IDelegationManagerTypesQueuedWithdrawalParams struct { Strategies []common.Address @@ -62,8 +55,8 @@ type ISignatureUtilsSignatureWithExpiry struct { // ContractDelegationManagerMetaData contains all meta data concerning the ContractDelegationManager contract. var ContractDelegationManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_MIN_WITHDRAWAL_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approver\",\"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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"numToComplete\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseBeaconChainScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"existingDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proportionOfOldBalance\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decreaseOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"wadSlashed\",\"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\":\"delegatedTo\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"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\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBeaconChainSlashingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDepositedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"existingDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"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\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"__deprecated_stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"__deprecated_stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"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\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"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\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"__deprecated_stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainScalingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newBeaconChainScalingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDetailsModified\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"__deprecated_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\":\"structIDelegationManagerTypes.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"__deprecated_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\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"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\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayExeedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotStaker\",\"inputs\":[]}]", - Bin: "0x61018060405234801561001157600080fd5b50604051615fe6380380615fe683398101604081905261003091610235565b8585858584866001600160a01b03811661005d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805294851660a05292841660c05290831660e0529091166101005263ffffffff1661012052466101405261009b6100b2565b610160526100a761015e565b5050505050506102c5565b60006101405146146101565750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b506101605190565b600054610100900460ff16156101ca5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461021b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461023257600080fd5b50565b60008060008060008060c0878903121561024e57600080fd5b86516102598161021d565b602088015190965061026a8161021d565b604088015190955061027b8161021d565b606088015190945061028c8161021d565b608088015190935061029d8161021d565b60a088015190925063ffffffff811681146102b757600080fd5b809150509295509295509295565b60805160a05160c05160e05161010051610120516101405161016051615c456103a1600039600061402b01526000613f6b0152600081816105f001526134f40152600081816108b201528181610fbe015281816110b9015281816113340152818161206c01528181612d0b01526140c201526000818161045f01528181610f43015281816112a801528181611be40152613ef00152600081816103bb01528181610f1101528181611b330152613eca0152600061058301526000818161062c01528181610d07015281816111d00152612b800152615c456000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c8063778e55f31161019d578063bfae3fd2116100e9578063e4cc3f90116100a2578063f16172b01161007c578063f16172b014610940578063f2fde38b14610953578063f698da2514610966578063fabc1cbc1461096e57600080fd5b8063e4cc3f90146108fa578063eea9064b1461090d578063f0e0e6761461092057600080fd5b8063bfae3fd2146107d3578063c5e480db146107e6578063c978f7ac1461088c578063ca8aa7c7146108ad578063cd6dc687146108d4578063da8be864146108e757600080fd5b80639435bb4311610156578063a178848411610130578063a17884841461074f578063b6f73bdf1461076f578063b7f06ebe14610782578063bb45fef2146107a557600080fd5b80639435bb431461069a57806399be81c8146106ad57806399f5371b146106c057600080fd5b8063778e55f3146105c057806377a6a019146105eb578063886f1195146106275780638da5cb5b1461064e578063900413471461065f5780639104c3191461067f57600080fd5b8063595c6a671161025c5780635f48e6671161021557806366d5ba93116101ef57806366d5ba931461055d5780636b3aa72e1461057e5780636d70f7ae146105a5578063715018a6146105b857600080fd5b80635f48e6671461050e57806360d7faed1461052157806365da12641461053457600080fd5b8063595c6a6714610494578063597b36da1461049c5780635ac86ab7146104af5780635c975abb146104d25780635d9aed23146104da5780635dd68579146104ed57600080fd5b806339b70e38116102ae57806339b70e38146103b65780633c651cf2146103f55780633cdeb5e0146104085780633e28391d146104375780634665bcda1461045a578063497300601461048157600080fd5b806304a4f979146102f65780630b9f487a146103305780630dd8dd0214610343578063136439dd1461036357806326f5e75b1461037857806333404396146103a3575b600080fd5b61031d7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61031d61033e3660046148a6565b610981565b610356610351366004614945565b610a0a565b6040516103279190614986565b6103766103713660046149be565b610cf2565b005b61038b6103863660046149d7565b610dc9565b6040516001600160401b039091168152602001610327565b6103766103b13660046149f4565b610e2c565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610327565b610376610403366004614ac7565b610f06565b6103dd6104163660046149d7565b6001600160a01b039081166000908152609960205260409020600101541690565b61044a6104453660046149d7565b611051565b6040519015158152602001610327565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b61037661048f366004614b7d565b611071565b6103766111bb565b61031d6104aa366004614e27565b61126d565b61044a6104bd366004614e5b565b606654600160ff9092169190911b9081161490565b60665461031d565b6103766104e8366004614e93565b61129d565b6105006104fb3660046149d7565b611476565b604051610327929190615024565b61037661051c366004615093565b611837565b61037661052f36600461512a565b611abb565b6103dd6105423660046149d7565b609a602052600090815260409020546001600160a01b031681565b61057061056b3660046149d7565b611b0a565b6040516103279291906151b5565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b61044a6105b33660046149d7565b611e17565b610376611e51565b61031d6105ce3660046151da565b609860209081526000928352604080842090915290825290205481565b6106127f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610327565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103dd565b61067261066d366004615213565b611e63565b6040516103279190615262565b6103dd73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103766106a8366004615275565b611f3d565b6103766106bb366004615318565b611ff4565b6107116106ce3660046149be565b60a560205260009081526040902080546001820154600283015460038401546004909401546001600160a01b039384169492841693909116919063ffffffff1685565b604080516001600160a01b03968716815294861660208601529290941691830191909152606082015263ffffffff909116608082015260a001610327565b61031d61075d3660046149d7565b609f6020526000908152604090205481565b61037661077d36600461534d565b612061565b61044a6107903660046149be565b609e6020526000908152604090205460ff1681565b61044a6107b336600461538e565b609c60209081526000928352604080842090915290825290205460ff1681565b61031d6107e13660046151da565b6120f1565b6108566107f43660046149d7565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610327565b61089f61089a366004615213565b61212e565b6040516103279291906153ba565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6103766108e236600461538e565b6123c6565b6103566108f53660046149d7565b6124e8565b6103766109083660046153cd565b61288d565b61037661091b36600461544c565b6128e3565b61093361092e36600461553c565b612a1f565b60405161032791906155ef565b61037661094e366004615602565b612ac6565b6103766109613660046149d7565b612af9565b61031d612b6f565b61037661097c3660046149be565b612b7e565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c08101829052600090610a009060e00160405160208183030381529060405280519060200120612c8f565b9695505050505050565b606654606090600190600290811603610a365760405163840a48d560e01b815260040160405180910390fd5b6000836001600160401b03811115610a5057610a50614be0565b604051908082528060200260200182016040528015610a79578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ce757868682818110610ab457610ab461561e565b9050602002810190610ac69190615634565b610ad4906020810190615654565b9050878783818110610ae857610ae861561e565b9050602002810190610afa9190615634565b610b049080615654565b905014610b24576040516343714afd60e01b815260040160405180910390fd5b33878783818110610b3757610b3761561e565b9050602002810190610b499190615634565b610b5a9060608101906040016149d7565b6001600160a01b031614610b81576040516330c4716960e21b815260040160405180910390fd5b6000610bed33848a8a86818110610b9a57610b9a61561e565b9050602002810190610bac9190615634565b610bb69080615654565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cbe92505050565b9050610cc133848a8a86818110610c0657610c0661561e565b9050602002810190610c189190615634565b610c229080615654565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610c6857610c6861561e565b9050602002810190610c7a9190615634565b610c88906020810190615654565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612e0c915050565b848381518110610cd357610cd361561e565b602090810291909101015250600101610a9a565b509095945050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a919061569d565b610d9757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610dbc5760405163c61dca5d60e01b815260040160405180910390fd5b610dc5826133c0565b5050565b6001600160a01b038116600090815260a36020908152604080832081518083019092525460ff811615158083526101009091046001600160401b03169282019290925290610e1f57670de0b6b3a7640000610e25565b80602001515b9392505050565b606654600290600490811603610e555760405163840a48d560e01b815260040160405180910390fd5b610e5d6133fd565b60005b88811015610ef057610ee88a8a83818110610e7d57610e7d61561e565b9050602002810190610e8f91906156ba565b610e98906156d0565b898984818110610eaa57610eaa61561e565b9050602002810190610ebc9190615654565b878786818110610ece57610ece61561e565b9050602002016020810190610ee391906156dc565b613456565b600101610e60565b50610efb600160c955565b505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f655750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610f825760405163045206a560e21b815260040160405180910390fd5b6001600160a01b038481166000908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906156f9565b905060006110388787846138f5565b9050611048838888888886613957565b50505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b61107a33611051565b1561109857604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e690604401600060405180830381600087803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b505050506111273385613a98565b6111313333613af0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e28560405161116a9190615716565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b670809083836040516111ad92919061576d565b60405180910390a250505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561121f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611243919061569d565b61126057604051631d77d47760e21b815260040160405180910390fd5b61126b6000196133c0565b565b600081604051602001611280919061579c565b604051602081830303815290604052805190602001209050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112e657604051633213a66160e21b815260040160405180910390fd5b6001600160a01b038381166000908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139f91906156f9565b6001600160a01b038616600090815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0808552908352818420825193840190925290548252929350916113f4908890856138f5565b90506000611403838884613bec565b905061140f8887613c13565b61142e8873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0866138f5565b9150600061143d848985613bec565b905061144889611051565b15610efb57610efb868a73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac061147185876157c5565b613d2c565b6001600160a01b038116600090815260a460205260408120606091829161149c90613da7565b8051909150806001600160401b038111156114b9576114b9614be0565b6040519080825280602002602001820160405280156114f257816020015b6114df614754565b8152602001906001900390816114d75790505b509350806001600160401b0381111561150d5761150d614be0565b60405190808252806020026020018201604052801561154057816020015b606081526020019060019003908161152b5790505b506001600160a01b038087166000908152609a60205260408120549295509116905b8281101561182e5760a560008583815181106115805761158061561e565b6020908102919091018101518252818101929092526040908101600020815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a086019390929083018282801561163d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161161f575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561169557602002820191906000526020600020905b815481526020019060010190808311611681575b5050505050815250508682815181106116b0576116b061561e565b60200260200101819052508581815181106116cd576116cd61561e565b602002602001015160a00151516001600160401b038111156116f1576116f1614be0565b60405190808252806020026020018201604052801561171a578160200160208202803683370190505b5085828151811061172d5761172d61561e565b6020026020010181905250600061176288848985815181106117515761175161561e565b602002602001015160a00151612cbe565b905060005b8783815181106117795761177961561e565b602002602001015160a0015151811015611824576117e68884815181106117a2576117a261561e565b602002602001015160c0015182815181106117bf576117bf61561e565b60200260200101518385815181106117d9576117d961561e565b6020026020010151613db4565b8784815181106117f8576117f861561e565b602002602001015182815181106118115761181161561e565b6020908102919091010152600101611767565b5050600101611562565b50505050915091565b6066546002906004908116036118605760405163840a48d560e01b815260040160405180910390fd5b6118686133fd565b33600090815260a4602052604081209061188182613dc0565b90508084116118905783611892565b805b93506000846001600160401b038111156118ae576118ae614be0565b6040519080825280602002602001820160405280156118e757816020015b6118d4614754565b8152602001906001900390816118cc5790505b50905060005b8151811015611a3d5760a560006119048684613dca565b81526020808201929092526040908101600020815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a08601939092908301828280156119b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611999575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611a0f57602002820191906000526020600020905b8154815260200190600101908083116119fb575b505050505081525050828281518110611a2a57611a2a61561e565b60209081029190910101526001016118ed565b5060005b8151811015611aa557611a9d828281518110611a5f57611a5f61561e565b60200260200101518b8b84818110611a7957611a7961561e565b9050602002810190611a8b9190615654565b8b8b86818110610ece57610ece61561e565b600101611a41565b50505050611ab3600160c955565b505050505050565b606654600290600490811603611ae45760405163840a48d560e01b815260040160405180910390fd5b611aec6133fd565b611b00611af8876156d0565b868685613456565b611ab3600160c955565b6040516394f649dd60e01b81526001600160a01b038281166004830152606091829160009182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd90602401600060405180830381865afa158015611b7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba29190810190615836565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092506000917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4f91906158f7565b905080600003611c6457509094909350915050565b600083516001611c749190615910565b6001600160401b03811115611c8b57611c8b614be0565b604051908082528060200260200182016040528015611cb4578160200160208202803683370190505b509050600084516001611cc79190615910565b6001600160401b03811115611cde57611cde614be0565b604051908082528060200260200182016040528015611d07578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082865181518110611d3257611d3261561e565b60200260200101906001600160a01b031690816001600160a01b0316815250508281865181518110611d6657611d6661561e565b60200260200101818152505060005b8551811015611e0957858181518110611d9057611d9061561e565b6020026020010151838281518110611daa57611daa61561e565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611ddc57611ddc61561e565b6020026020010151828281518110611df657611df661561e565b6020908102919091010152600101611d75565b509097909650945050505050565b60006001600160a01b03821615801590611e4b57506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b611e59613dd6565b61126b6000613e30565b6060600082516001600160401b03811115611e8057611e80614be0565b604051908082528060200260200182016040528015611ea9578160200160208202803683370190505b50905060005b8351811015611f35576001600160a01b03851660009081526098602052604081208551909190869084908110611ee757611ee761561e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611f2257611f2261561e565b6020908102919091010152600101611eaf565b509392505050565b606654600290600490811603611f665760405163840a48d560e01b815260040160405180910390fd5b611f6e6133fd565b8560005b81811015611fe857611fe0898983818110611f8f57611f8f61561e565b9050602002810190611fa191906156ba565b611faa906156d0565b888884818110611fbc57611fbc61561e565b9050602002810190611fce9190615654565b888886818110610ece57610ece61561e565b600101611f72565b5050611048600160c955565b611ffd33611e17565b61201a576040516325ec6c1f60e01b815260040160405180910390fd5b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090838360405161205592919061576d565b60405180910390a25050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120aa576040516323d871a560e01b815260040160405180910390fd5b6001600160a01b0380841660009081526098602090815260408083209386168352929052908120546120dc9083613db4565b90506120eb8460008584613d2c565b50505050565b6001600160a01b03808316600090815260a260209081526040808320938516835292815282822083519182019093529154825290610e2590613e82565b60608082516001600160401b0381111561214a5761214a614be0565b604051908082528060200260200182016040528015612173578160200160208202803683370190505b50915082516001600160401b0381111561218f5761218f614be0565b6040519080825280602002602001820160405280156121b8578160200160208202803683370190505b506001600160a01b038086166000908152609a60205260408120549293509116906121e4868387612cbe565b905060005b85518110156123bb5760006122168783815181106122095761220961561e565b6020026020010151613ea2565b9050806001600160a01b031663fe243a178989858151811061223a5761223a61561e565b60200260200101516040518363ffffffff1660e01b81526004016122749291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b591906158f7565b8583815181106122c7576122c761561e565b602002602001018181525050600060a260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600089858151811061230e5761230e61561e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060405180602001604052908160008201548152505090506123948684815181106123625761236261561e565b602002602001015185858151811061237c5761237c61561e565b602002602001015183613bec9092919063ffffffff16565b8784815181106123a6576123a661561e565b602090810291909101015250506001016121e9565b5050505b9250929050565b600054610100900460ff16158080156123e65750600054600160ff909116105b806124005750303b158015612400575060005460ff166001145b6124685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561248b576000805461ff0019166101001790555b612494826133c0565b61249d83613e30565b80156124e3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6066546060906001906002908116036125145760405163840a48d560e01b815260040160405180910390fd5b61251d83611051565b61253a5760405163a5c7c44560e01b815260040160405180910390fd5b61254383611e17565b15612561576040516311ca333560e31b815260040160405180910390fd5b6001600160a01b038316612588576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b038084166000818152609a6020526040902054909116903314806125bb5750336001600160a01b038216145b806125e257506001600160a01b038181166000908152609960205260409020600101541633145b6125ff57604051631e499a2360e11b815260040160405180910390fd5b60008061260b86611b0a565b6001600160a01b038089166000818152609a602052604080822080546001600160a01b0319169055519496509294509086169290917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a3336001600160a01b038716146126b457826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b81516000036126c557505050612887565b81516001600160401b038111156126de576126de614be0565b604051908082528060200260200182016040528015612707578160200160208202803683370190505b5094506000612717878585612cbe565b905060005b835181101561288157604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905086848151811061279f5761279f61561e565b6020026020010151836000815181106127ba576127ba61561e565b60200260200101906001600160a01b031690816001600160a01b0316815250508584815181106127ec576127ec61561e565b6020026020010151826000815181106128075761280761561e565b6020026020010181815250508484815181106128255761282561561e565b6020026020010151816000815181106128405761284061561e565b6020026020010181815250506128598b89858585612e0c565b8a858151811061286b5761286b61561e565b602090810291909101015250505060010161271c565b50505050505b50919050565b6066546002906004908116036128b65760405163840a48d560e01b815260040160405180910390fd5b6128be6133fd565b6128d26128ca866156d0565b858585613456565b6128dc600160c955565b5050505050565b6128ec33611051565b1561290a57604051633bf2b50360e11b815260040160405180910390fd5b61291383611e17565b612930576040516325ec6c1f60e01b815260040160405180910390fd5b6001600160a01b038084166000908152609960205260409020600101541680158015906129665750336001600160a01b03821614155b801561297b5750336001600160a01b03851614155b15612a15576001600160a01b0381166000908152609c6020908152604080832085845290915290205460ff16156129c557604051630d4c4c9160e21b815260040160405180910390fd5b6129e6816129da338785878960200151610981565b85516020870151613f15565b6001600160a01b0381166000908152609c602090815260408083208584529091529020805460ff191660011790555b6120eb3385613af0565b6060600083516001600160401b03811115612a3c57612a3c614be0565b604051908082528060200260200182016040528015612a6f57816020015b6060815260200190600190039081612a5a5790505b50905060005b8451811015611f3557612aa1858281518110612a9357612a9361561e565b602002602001015185611e63565b828281518110612ab357612ab361561e565b6020908102919091010152600101612a75565b612acf33611e17565b612aec576040516325ec6c1f60e01b815260040160405180910390fd5b612af63382613a98565b50565b612b01613dd6565b6001600160a01b038116612b665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161245f565b612af681613e30565b6000612b79613f67565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c009190615923565b6001600160a01b0316336001600160a01b031614612c315760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614612c585760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001612055565b6000612c99613f67565b60405161190160f01b6020820152602281019190915260428101839052606201611280565b6060600082516001600160401b03811115612cdb57612cdb614be0565b604051908082528060200260200182016040528015612d04578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b8152600401612d57929190615940565b600060405180830381865afa158015612d74573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d9c9190810190615964565b905060005b8451811015610ce757612de787868381518110612dc057612dc061561e565b6020026020010151848481518110612dda57612dda61561e565b60200260200101516138f5565b838281518110612df957612df961561e565b6020908102919091010152600101612da1565b60006001600160a01b038616612e35576040516339b190bb60e11b815260040160405180910390fd5b8351600003612e575760405163796cc52560e01b815260040160405180910390fd5b600084516001600160401b03811115612e7257612e72614be0565b604051908082528060200260200182016040528015612e9b578160200160208202803683370190505b509050600085516001600160401b03811115612eb957612eb9614be0565b604051908082528060200260200182016040528015612ee2578160200160208202803683370190505b50905060005b86518110156131ee576000612f088883815181106122095761220961561e565b9050600060a260008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a8581518110612f4557612f4561561e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250509050816001600160a01b031663fe243a178c8b8681518110612fa657612fa661561e565b60200260200101516040518363ffffffff1660e01b8152600401612fe09291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302191906158f7565b8884815181106130335761303361561e565b6020026020010151111561305a5760405163f020e5b960e01b815260040160405180910390fd5b61308988848151811061306f5761306f61561e565b602002602001015188858151811061237c5761237c61561e565b84848151811061309b5761309b61561e565b6020026020010181815250506130e38484815181106130bc576130bc61561e565b60200260200101518885815181106130d6576130d661561e565b602002602001015161404d565b8584815181106130f5576130f561561e565b60209081029190910101526001600160a01b038a161561314d5761314d8a8c8b86815181106131265761312661561e565b60200260200101518787815181106131405761314061561e565b6020026020010151613d2c565b816001600160a01b031663724af4238c8b868151811061316f5761316f61561e565b60200260200101518b87815181106131895761318961561e565b60200260200101516040518463ffffffff1660e01b81526004016131af939291906159f8565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505050806001019050612ee8565b506001600160a01b0388166000908152609f6020526040812080549182919061321683615a1c565b919050555060006040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff168152602001898152602001858152509050600061327e8261126d565b6000818152609e602090815260408083208054600160ff19909116811790915560a5835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a08501518051939450859361333592600585019201906147b2565b5060c08201518051613351916006840191602090910190614817565b5050506001600160a01b038b16600090815260a4602052604090206133769082614069565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e308183866040516133aa93929190615a35565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361344f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161245f565b600260c955565b60a084015151821461347b576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146134b1576040516316110d3560e21b815260040160405180910390fd5b60006134bc8561126d565b6000818152609e602052604090205490915060ff166134ee576040516387c9d21960e01b815260040160405180910390fd5b606060007f000000000000000000000000000000000000000000000000000000000000000087608001516135229190615a60565b90504363ffffffff168163ffffffff161115613551576040516378f67ae160e11b815260040160405180910390fd5b613569876000015188602001518960a0015184614075565b87516001600160a01b039081166000908152609a60205260408120548a5160a08c015194965092169350916135a091908490612cbe565b905060005b8860a001515181101561380f5760006135cd8a60a0015183815181106122095761220961561e565b905060006136048b60c0015184815181106135ea576135ea61561e565b60200260200101518785815181106117d9576117d961561e565b905087156136da57816001600160a01b0316632eae418c8c600001518d60a0015186815181106136365761363661561e565b60200260200101518d8d888181106136505761365061561e565b905060200201602081019061366591906149d7565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b1580156136bd57600080fd5b505af11580156136d1573d6000803e3d6000fd5b50505050613805565b600080836001600160a01b031663c4623ea18e600001518f60a0015188815181106137075761370761561e565b60200260200101518f8f8a8181106137215761372161561e565b905060200201602081019061373691906149d7565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152918316602483015290911660448201526064810186905260840160408051808303816000875af1158015613792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b69190615a7c565b91509150613802878e600001518f60a0015188815181106137d9576137d961561e565b602002602001015185858b8b815181106137f5576137f561561e565b6020026020010151613957565b50505b50506001016135a5565b5087516001600160a01b0316600090815260a46020526040902061383390856141aa565b50600084815260a56020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff191690559061388b6005830182614852565b613899600683016000614852565b50506000848152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906138e39086815260200190565b60405180910390a15050505050505050565b600073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b0384160161394757600061392785610dc9565b905061393f6001600160401b038481169083166141b6565b915050610e25565b506001600160401b031692915050565b8060000361397857604051630a33bc6960e21b815260040160405180910390fd5b6001600160a01b03808616600090815260a2602090815260408083209388168352929052206139a9818585856141cb565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f90879087906139e790613e82565b6040516139f6939291906159f8565b60405180910390a1613a0786611051565b15611048576001600160a01b03808816600090815260986020908152604080832093891683529290529081208054859290613a43908490615910565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c878786604051613a87939291906159f8565b60405180910390a250505050505050565b6001600160a01b03821660009081526099602052604090208190613abc8282615ac0565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90612055908490615716565b606654600090600190811603613b195760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038381166000818152609a602052604080822080546001600160a01b0319169487169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a3600080613b7885611b0a565b915091506000613b89868685612cbe565b905060005b835181101561104857613be48688868481518110613bae57613bae61561e565b60200260200101516000878681518110613bca57613bca61561e565b60200260200101518787815181106137f5576137f561561e565b600101613b8e565b6000613c0b82613c05613bfe87613e82565b86906141b6565b906141b6565b949350505050565b6001600160a01b038216600090815260a3602090815260409182902082518084019093525460ff8116151583526001600160401b03610100909104811691830191909152613c75908316613c6685610dc9565b6001600160401b0316906141b6565b6001600160401b0316602082810182905260018352604080516001600160a01b0387168152918201929092527fddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd910160405180910390a16001600160a01b03909216600090815260a3602090815260409091208351815492909401516001600160401b03166101000268ffffffffffffffff00199415159490941668ffffffffffffffffff19909216919091179290921790915550565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613d639084906157c5565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd8484846040516111ad939291906159f8565b60606000610e2583614244565b6000610e2583836141b6565b6000611e4b825490565b6000610e2583836142a0565b6033546001600160a01b0316331461126b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161245f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b805160009015613e93578151611e4b565b670de0b6b3a764000092915050565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014613eee577f0000000000000000000000000000000000000000000000000000000000000000611e4b565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b42811015613f3657604051630819bdcd60e01b815260040160405180910390fd5b613f4a6001600160a01b03851684846142ca565b6120eb57604051638baa579f60e01b815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000046146140285750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60008160000361405f57506000611e4b565b610e258383614321565b6000610e258383614336565b6060600083516001600160401b0381111561409257614092614be0565b6040519080825280602002602001820160405280156140bb578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b815260040161411093929190615b23565b600060405180830381865afa15801561412d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141559190810190615964565b905060005b855181101561419e5761417988878381518110612dc057612dc061561e565b83828151811061418b5761418b61561e565b602090810291909101015260010161415a565b50909695505050505050565b6000610e258383614385565b6000610e258383670de0b6b3a7640000614478565b826000036141ec576141e5670de0b6b3a764000082614321565b84556120eb565b604080516020810190915284548152600090614209908584613bec565b905060006142178483615910565b905060006142398461423361422c888a615910565b8590614321565b90614321565b875550505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561429457602002820191906000526020600020905b815481526020019060010190808311614280575b50505050509050919050565b60008260000182815481106142b7576142b761561e565b9060005260206000200154905092915050565b60008060006142d98585614562565b909250905060008160048111156142f2576142f2615b5d565b1480156143105750856001600160a01b0316826001600160a01b0316145b80610a005750610a008686866145a4565b6000610e2583670de0b6b3a764000084614478565b600081815260018301602052604081205461437d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611e4b565b506000611e4b565b6000818152600183016020526040812054801561446e5760006143a96001836157c5565b85549091506000906143bd906001906157c5565b90508181146144225760008660000182815481106143dd576143dd61561e565b90600052602060002001549050808760000184815481106144005761440061561e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061443357614433615b73565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611e4b565b6000915050611e4b565b60008080600019858709858702925082811083820303915050806000036144b2578382816144a8576144a8615b89565b0492505050610e25565b8084116144f95760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161245f565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008082516041036145985760208301516040840151606085015160001a61458c87828585614690565b945094505050506123bf565b506000905060026123bf565b6000806000856001600160a01b0316631626ba7e60e01b86866040516024016145ce929190615bc3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161460c9190615bfd565b600060405180830381855afa9150503d8060008114614647576040519150601f19603f3d011682016040523d82523d6000602084013e61464c565b606091505b509150915081801561466057506020815110155b8015610a0057508051630b135d3f60e11b9061468590830160209081019084016158f7565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c7575060009050600361474b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561471b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147445760006001925092505061474b565b9150600090505b94509492505050565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600063ffffffff16815260200160608152602001606081525090565b828054828255906000526020600020908101928215614807579160200282015b8281111561480757825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147d2565b5061481392915061486c565b5090565b828054828255906000526020600020908101928215614807579160200282015b82811115614807578251825591602001919060010190614837565b5080546000825590600052602060002090810190612af691905b5b80821115614813576000815560010161486d565b6001600160a01b0381168114612af657600080fd5b80356148a181614881565b919050565b600080600080600060a086880312156148be57600080fd5b85356148c981614881565b945060208601356148d981614881565b935060408601356148e981614881565b94979396509394606081013594506080013592915050565b60008083601f84011261491357600080fd5b5081356001600160401b0381111561492a57600080fd5b6020830191508360208260051b85010111156123bf57600080fd5b6000806020838503121561495857600080fd5b82356001600160401b0381111561496e57600080fd5b61497a85828601614901565b90969095509350505050565b602080825282518282018190526000918401906040840190835b81811015610ce75783518352602093840193909201916001016149a0565b6000602082840312156149d057600080fd5b5035919050565b6000602082840312156149e957600080fd5b8135610e2581614881565b6000806000806000806000806080898b031215614a1057600080fd5b88356001600160401b03811115614a2657600080fd5b614a328b828c01614901565b90995097505060208901356001600160401b03811115614a5157600080fd5b614a5d8b828c01614901565b90975095505060408901356001600160401b03811115614a7c57600080fd5b614a888b828c01614901565b90955093505060608901356001600160401b03811115614aa757600080fd5b614ab38b828c01614901565b999c989b5096995094979396929594505050565b60008060008060808587031215614add57600080fd5b8435614ae881614881565b93506020850135614af881614881565b93969395505050506040820135916060013590565b60006060828403121561288757600080fd5b63ffffffff81168114612af657600080fd5b80356148a181614b1f565b60008083601f840112614b4e57600080fd5b5081356001600160401b03811115614b6557600080fd5b6020830191508360208285010111156123bf57600080fd5b60008060008060a08587031215614b9357600080fd5b614b9d8686614b0d565b93506060850135614bad81614b1f565b925060808501356001600160401b03811115614bc857600080fd5b614bd487828801614b3c565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1857614c18614be0565b60405290565b604080519081016001600160401b0381118282101715614c1857614c18614be0565b604051601f8201601f191681016001600160401b0381118282101715614c6857614c68614be0565b604052919050565b60006001600160401b03821115614c8957614c89614be0565b5060051b60200190565b600082601f830112614ca457600080fd5b8135614cb7614cb282614c70565b614c40565b8082825260208201915060208360051b860101925085831115614cd957600080fd5b602085015b83811015614cff578035614cf181614881565b835260209283019201614cde565b5095945050505050565b600082601f830112614d1a57600080fd5b8135614d28614cb282614c70565b8082825260208201915060208360051b860101925085831115614d4a57600080fd5b602085015b83811015614cff578035835260209283019201614d4f565b600060e08284031215614d7957600080fd5b614d81614bf6565b9050614d8c82614896565b8152614d9a60208301614896565b6020820152614dab60408301614896565b604082015260608281013590820152614dc660808301614b31565b608082015260a08201356001600160401b03811115614de457600080fd5b614df084828501614c93565b60a08301525060c08201356001600160401b03811115614e0f57600080fd5b614e1b84828501614d09565b60c08301525092915050565b600060208284031215614e3957600080fd5b81356001600160401b03811115614e4f57600080fd5b613c0b84828501614d67565b600060208284031215614e6d57600080fd5b813560ff81168114610e2557600080fd5b6001600160401b0381168114612af657600080fd5b600080600060608486031215614ea857600080fd5b8335614eb381614881565b9250602084013591506040840135614eca81614e7e565b809150509250925092565b600081518084526020840193506020830160005b82811015614f105781516001600160a01b0316865260209586019590910190600101614ee9565b5093949350505050565b600081518084526020840193506020830160005b82811015614f10578151865260209586019590910190600101614f2e565b80516001600160a01b0390811683526020808301518216908401526040808301519091169083015260608082015190830152608080820151600091614f989085018263ffffffff169052565b5060a082015160e060a0850152614fb260e0850182614ed5565b905060c083015184820360c0860152614fcb8282614f1a565b95945050505050565b600082825180855260208501945060208160051b8301016020850160005b8381101561419e57601f1985840301885261500e838351614f1a565b6020988901989093509190910190600101614ff2565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b8281101561507d57605f19878603018452615068858351614f4c565b9450602093840193919091019060010161504c565b505050508281036020840152614fcb8185614fd4565b6000806000806000606086880312156150ab57600080fd5b85356001600160401b038111156150c157600080fd5b6150cd88828901614901565b90965094505060208601356001600160401b038111156150ec57600080fd5b6150f888828901614901565b96999598509660400135949350505050565b600060e0828403121561288757600080fd5b8015158114612af657600080fd5b60008060008060006080868803121561514257600080fd5b85356001600160401b0381111561515857600080fd5b6151648882890161510a565b95505060208601356001600160401b0381111561518057600080fd5b61518c88828901614901565b9095509350506040860135915060608601356151a78161511c565b809150509295509295909350565b6040815260006151c86040830185614ed5565b8281036020840152614fcb8185614f1a565b600080604083850312156151ed57600080fd5b82356151f881614881565b9150602083013561520881614881565b809150509250929050565b6000806040838503121561522657600080fd5b823561523181614881565b915060208301356001600160401b0381111561524c57600080fd5b61525885828601614c93565b9150509250929050565b602081526000610e256020830184614f1a565b6000806000806000806060878903121561528e57600080fd5b86356001600160401b038111156152a457600080fd5b6152b089828a01614901565b90975095505060208701356001600160401b038111156152cf57600080fd5b6152db89828a01614901565b90955093505060408701356001600160401b038111156152fa57600080fd5b61530689828a01614901565b979a9699509497509295939492505050565b6000806020838503121561532b57600080fd5b82356001600160401b0381111561534157600080fd5b61497a85828601614b3c565b60008060006060848603121561536257600080fd5b833561536d81614881565b9250602084013561537d81614881565b929592945050506040919091013590565b600080604083850312156153a157600080fd5b82356153ac81614881565b946020939093013593505050565b6040815260006151c86040830185614f1a565b600080600080606085870312156153e357600080fd5b84356001600160401b038111156153f957600080fd5b6154058782880161510a565b94505060208501356001600160401b0381111561542157600080fd5b61542d87828801614901565b90945092505060408501356154418161511c565b939692955090935050565b60008060006060848603121561546157600080fd5b833561546c81614881565b925060208401356001600160401b0381111561548757600080fd5b84016040818703121561549957600080fd5b6154a1614c1e565b81356001600160401b038111156154b757600080fd5b8201601f810188136154c857600080fd5b80356001600160401b038111156154e1576154e1614be0565b6154f4601f8201601f1916602001614c40565b81815289602083850101111561550957600080fd5b81602084016020830137600060209282018301528352928301359282019290925293969395505050506040919091013590565b6000806040838503121561554f57600080fd5b82356001600160401b0381111561556557600080fd5b8301601f8101851361557657600080fd5b8035615584614cb282614c70565b8082825260208201915060208360051b8501019250878311156155a657600080fd5b6020840193505b828410156155d15783356155c081614881565b8252602093840193909101906155ad565b945050505060208301356001600160401b0381111561524c57600080fd5b602081526000610e256020830184614fd4565b60006060828403121561561457600080fd5b610e258383614b0d565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261564a57600080fd5b9190910192915050565b6000808335601e1984360301811261566b57600080fd5b8301803591506001600160401b0382111561568557600080fd5b6020019150600581901b36038213156123bf57600080fd5b6000602082840312156156af57600080fd5b8151610e258161511c565b6000823560de1983360301811261564a57600080fd5b6000611e4b3683614d67565b6000602082840312156156ee57600080fd5b8135610e258161511c565b60006020828403121561570b57600080fd5b8151610e2581614e7e565b60608101823561572581614881565b6001600160a01b03168252602083013561573e81614881565b6001600160a01b03166020830152604083013561575a81614b1f565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b602081526000610e256020830184614f4c565b634e487b7160e01b600052601160045260246000fd5b81810381811115611e4b57611e4b6157af565b600082601f8301126157e957600080fd5b81516157f7614cb282614c70565b8082825260208201915060208360051b86010192508583111561581957600080fd5b602085015b83811015614cff57805183526020928301920161581e565b6000806040838503121561584957600080fd5b82516001600160401b0381111561585f57600080fd5b8301601f8101851361587057600080fd5b805161587e614cb282614c70565b8082825260208201915060208360051b8501019250878311156158a057600080fd5b6020840193505b828410156158cb5783516158ba81614881565b8252602093840193909101906158a7565b8095505050505060208301516001600160401b038111156158eb57600080fd5b615258858286016157d8565b60006020828403121561590957600080fd5b5051919050565b80820180821115611e4b57611e4b6157af565b60006020828403121561593557600080fd5b8151610e2581614881565b6001600160a01b0383168152604060208201819052600090613c0b90830184614ed5565b60006020828403121561597657600080fd5b81516001600160401b0381111561598c57600080fd5b8201601f8101841361599d57600080fd5b80516159ab614cb282614c70565b8082825260208201915060208360051b8501019250868311156159cd57600080fd5b6020840193505b82841015610a005783516159e781614e7e565b8252602093840193909101906159d4565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018201615a2e57615a2e6157af565b5060010190565b838152606060208201526000615a4e6060830185614f4c565b8281036040840152610a008185614f1a565b63ffffffff8181168382160190811115611e4b57611e4b6157af565b60008060408385031215615a8f57600080fd5b505080516020909101519092909150565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615acb81614881565b615ad58183615aa0565b50600181016020830135615ae881614881565b615af28183615aa0565b506040830135615b0181614b1f565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6001600160a01b0384168152606060208201819052600090615b4790830185614ed5565b905063ffffffff83166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60005b83811015615bba578181015183820152602001615ba2565b50506000910152565b8281526040602082015260008251806040840152615be8816060850160208701615b9f565b601f01601f1916919091016060019392505050565b6000825161564a818460208701615b9f56fea2646970667358221220b5e3767b1e642eea20367ebc19547293a6de284246ac912625c9ebf3f725626064736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_MIN_WITHDRAWAL_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approver\",\"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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"numToComplete\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"wadSlashed\",\"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\":\"delegatedTo\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"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\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDepositedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"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\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"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\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"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\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"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\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesBurned\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"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\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayExeedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotStaker\",\"inputs\":[]}]", + Bin: "0x6101a060405234801561001157600080fd5b5060405161635938038061635983398101604081905261003091610244565b818787878785886001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805294851660a05292841660c05290831660e0529091166101005263ffffffff1661012052466101405261009c6100c1565b610160526001600160a01b0316610180526100b561016d565b505050505050506102e9565b60006101405146146101655750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b506101605190565b600054610100900460ff16156101d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461022a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461024157600080fd5b50565b600080600080600080600060e0888a03121561025f57600080fd5b875161026a8161022c565b602089015190975061027b8161022c565b604089015190965061028c8161022c565b606089015190955061029d8161022c565b60808901519094506102ae8161022c565b60a08901519093506102bf8161022c565b60c089015190925063ffffffff811681146102d957600080fd5b8091505092959891949750929550565b60805160a05160c05160e0516101005161012051610140516101605161018051615f666103f360003960008181610419015261357f015260006141b6015260006140f60152600081816105d1015281816137140152613bf70152600081816107ed01528181610d4c01528181610f03015281816117f801528181611cad015281816125bd01528181612a7e01526143dc01526000818161044001528181610e880152818161175e015281816119df0152818161336201526140b401526000818161037501528181610e560152818161192e015281816126ad015261408e0152600061055101526000818161062001528181610c420152818161102701526128eb0152615f666000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c8063778e55f311610182578063bb45fef2116100e9578063e4cc3f90116100a2578063f0e0e6761161007c578063f0e0e6761461086e578063f2fde38b1461088e578063f698da25146108a1578063fabc1cbc146108a957600080fd5b8063e4cc3f9014610835578063ee74937f14610848578063eea9064b1461085b57600080fd5b8063bb45fef214610786578063bfae3fd2146107b4578063c978f7ac146107c7578063ca8aa7c7146107e8578063cd6dc6871461080f578063da8be8641461082257600080fd5b80639104c3191161013b5780639104c319146106735780639435bb431461068e57806399f5371b146106a1578063a178848414610730578063a33a343314610750578063b7f06ebe1461076357600080fd5b8063778e55f3146105a157806377a6a019146105cc57806378296ec514610608578063886f11951461061b5780638da5cb5b14610642578063900413471461065357600080fd5b8063595c6a671161024157806363ceb57d116101fa5780636b3aa72e116101d45780636b3aa72e1461054c5780636d70f7ae146105735780636e17444814610586578063715018a61461059957600080fd5b806363ceb57d146104ef57806365da12641461050257806366d5ba931461052b57600080fd5b8063595c6a6714610475578063597b36da1461047d5780635ac86ab7146104905780635c975abb146104b35780635dd68579146104bb5780635f48e667146104dc57600080fd5b80633c651cf2116102935780633c651cf2146103af5780633cdeb5e0146103c25780633e28391d146103f15780634657e26a146104145780634665bcda1461043b57806354b7c96c1461046257600080fd5b806304a4f979146102db5780630b9f487a146103155780630dd8dd0214610328578063136439dd146103485780632aa6d8881461035d57806339b70e3814610370575b600080fd5b6103027f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b610302610323366004614dbb565b6108bc565b61033b610336366004614e5a565b610945565b60405161030c9190614e9b565b61035b610356366004614ed3565b610c2d565b005b61035b61036b366004614f41565b610d04565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161030c565b61035b6103bd366004614fa3565b610e4b565b6103976103d0366004614fe9565b6001600160a01b039081166000908152609960205260409020600101541690565b6104046103ff366004614fe9565b610f96565b604051901515815260200161030c565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b61035b610470366004615006565b610fb6565b61035b611012565b61030261048b366004615286565b6110c4565b61040461049e3660046152ba565b606654600160ff9092169190911b9081161490565b606654610302565b6104ce6104c9366004614fe9565b6110f4565b60405161030c929190615423565b61035b6104ea366004615492565b6114b5565b61035b6104fd36600461551e565b611753565b610397610510366004614fe9565b609a602052600090815260409020546001600160a01b031681565b61053e610539366004614fe9565b611905565b60405161030c929190615566565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b610404610581366004614fe9565b611c12565b610302610594366004615006565b611c4c565b61035b611d5b565b6103026105af366004615006565b609860209081526000928352604080842090915290825290205481565b6105f37f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161030c565b61035b61061636600461558b565b611d6d565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610397565b6106666106613660046155df565b611df5565b60405161030c919061562e565b61039773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61035b61069c366004615641565b611ecf565b6106f26106af366004614ed3565b60a460205260009081526040902080546001820154600283015460038401546004909401546001600160a01b039384169492841693909116919063ffffffff1685565b604080516001600160a01b03968716815294861660208601529290941691830191909152606082015263ffffffff909116608082015260a00161030c565b61030261073e366004614fe9565b609f6020526000908152604090205481565b61033b61075e3660046156e4565b611f86565b610404610771366004614ed3565b609e6020526000908152604090205460ff1681565b6104046107943660046157d4565b609c60209081526000928352604080842090915290825290205460ff1681565b6103026107c2366004615006565b612023565b6107da6107d53660046155df565b612060565b60405161030c929190615800565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b61035b61081d3660046157d4565b6122f8565b61033b610830366004614fe9565b612419565b61035b610843366004615821565b61255c565b61035b6108563660046158a5565b6125b2565b61035b6108693660046156e4565b612757565b61088161087c3660046158f6565b6127ba565b60405161030c91906159a9565b61035b61089c366004614fe9565b612861565b6103026128da565b61035b6108b7366004614ed3565b6128e9565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c0810182905260009061093b9060e00160405160208183030381529060405280519060200120612a02565b9695505050505050565b6066546060906001906002908116036109715760405163840a48d560e01b815260040160405180910390fd5b6000836001600160401b0381111561098b5761098b61503f565b6040519080825280602002602001820160405280156109b4578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610c22578686828181106109ef576109ef6159bc565b9050602002810190610a0191906159d2565b610a0f9060208101906159f2565b9050878783818110610a2357610a236159bc565b9050602002810190610a3591906159d2565b610a3f90806159f2565b905014610a5f576040516343714afd60e01b815260040160405180910390fd5b33878783818110610a7257610a726159bc565b9050602002810190610a8491906159d2565b610a95906060810190604001614fe9565b6001600160a01b031614610abc576040516330c4716960e21b815260040160405180910390fd5b6000610b2833848a8a86818110610ad557610ad56159bc565b9050602002810190610ae791906159d2565b610af190806159f2565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612a3192505050565b9050610bfc33848a8a86818110610b4157610b416159bc565b9050602002810190610b5391906159d2565b610b5d90806159f2565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ba357610ba36159bc565b9050602002810190610bb591906159d2565b610bc39060208101906159f2565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612b7f915050565b848381518110610c0e57610c0e6159bc565b6020908102919091010152506001016109d5565b509095945050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb59190615a3b565b610cd257604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610cf75760405163c61dca5d60e01b815260040160405180910390fd5b610d0082613170565b5050565b610d0d33610f96565b15610d2b57604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e690604401600060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b50505050610dba33856131ad565b610dc43333613210565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610e3d929190615a58565b60405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610eaa5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610ec75760405163045206a560e21b815260040160405180910390fd5b6001600160a01b038481166000908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190615a87565b90506000610f7d878784613319565b9050610f8d8388888888866133ff565b50505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b81610fc081613540565b610fdd5760405163932d94f760e01b815260040160405180910390fd5b610fe683611c12565b611003576040516325ec6c1f60e01b815260040160405180910390fd5b61100d83836131ad565b505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109a9190615a3b565b6110b757604051631d77d47760e21b815260040160405180910390fd5b6110c2600019613170565b565b6000816040516020016110d79190615aa4565b604051602081830303815290604052805190602001209050919050565b6001600160a01b038116600090815260a360205260408120606091829161111a906135ee565b8051909150806001600160401b038111156111375761113761503f565b60405190808252806020026020018201604052801561117057816020015b61115d614c69565b8152602001906001900390816111555790505b509350806001600160401b0381111561118b5761118b61503f565b6040519080825280602002602001820160405280156111be57816020015b60608152602001906001900390816111a95790505b506001600160a01b038087166000908152609a60205260408120549295509116905b828110156114ac5760a460008583815181106111fe576111fe6159bc565b6020908102919091018101518252818101929092526040908101600020815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a08601939092908301828280156112bb57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161129d575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561131357602002820191906000526020600020905b8154815260200190600101908083116112ff575b50505050508152505086828151811061132e5761132e6159bc565b602002602001018190525085818151811061134b5761134b6159bc565b602002602001015160a00151516001600160401b0381111561136f5761136f61503f565b604051908082528060200260200182016040528015611398578160200160208202803683370190505b508582815181106113ab576113ab6159bc565b602002602001018190525060006113e088848985815181106113cf576113cf6159bc565b602002602001015160a00151612a31565b905060005b8783815181106113f7576113f76159bc565b602002602001015160a00151518110156114a257611464888481518110611420576114206159bc565b602002602001015160c00151828151811061143d5761143d6159bc565b6020026020010151838581518110611457576114576159bc565b60200260200101516135fb565b878481518110611476576114766159bc565b6020026020010151828151811061148f5761148f6159bc565b60209081029190910101526001016113e5565b50506001016111e0565b50505050915091565b6066546002906004908116036114de5760405163840a48d560e01b815260040160405180910390fd5b6114e6613607565b33600090815260a360205260408120906114ff82613660565b905080841161150e5783611510565b805b93506000846001600160401b0381111561152c5761152c61503f565b60405190808252806020026020018201604052801561156557816020015b611552614c69565b81526020019060019003908161154a5790505b50905060005b81518110156116bb5760a46000611582868461366a565b81526020808201929092526040908101600020815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a086019390929083018282801561163557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611617575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561168d57602002820191906000526020600020905b815481526020019060010190808311611679575b5050505050815250508282815181106116a8576116a86159bc565b602090810291909101015260010161156b565b5060005b815181101561173d576117358282815181106116dd576116dd6159bc565b60200260200101518b8b848181106116f7576116f76159bc565b905060200281019061170991906159f2565b8b8b8681811061171b5761171b6159bc565b90506020020160208101906117309190615ab7565b613676565b6001016116bf565b5050505061174b600160c955565b505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461179c57604051633213a66160e21b815260040160405180910390fd5b6117a584610f96565b156118ff576001600160a01b038481166000908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190615a87565b9050600061187d6001600160401b03808416908716613b08565b6001600160a01b038816600090815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506118d7866118d1848b87613b1d565b90613b08565b90506118f9858a73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084613b3e565b50505050505b50505050565b6040516394f649dd60e01b81526001600160a01b038281166004830152606091829160009182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd90602401600060405180830381865afa158015611975573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261199d9190810190615b32565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092506000917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa158015611a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4a9190615bf3565b905080600003611a5f57509094909350915050565b600083516001611a6f9190615c22565b6001600160401b03811115611a8657611a8661503f565b604051908082528060200260200182016040528015611aaf578160200160208202803683370190505b509050600084516001611ac29190615c22565b6001600160401b03811115611ad957611ad961503f565b604051908082528060200260200182016040528015611b02578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082865181518110611b2d57611b2d6159bc565b60200260200101906001600160a01b031690816001600160a01b0316815250508281865181518110611b6157611b616159bc565b60200260200101818152505060005b8551811015611c0457858181518110611b8b57611b8b6159bc565b6020026020010151838281518110611ba557611ba56159bc565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611bd757611bd76159bc565b6020026020010151828281518110611bf157611bf16159bc565b6020908102919091010152600101611b70565b509097909650945050505050565b60006001600160a01b03821615801590611c4657506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611c8557611c856159bc565b6001600160a01b03928316602091820292909201015260405163547afb8760e01b81526000917f0000000000000000000000000000000000000000000000000000000000000000169063547afb8790611ce49088908690600401615c35565b600060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d299190810190615c59565b600081518110611d3b57611d3b6159bc565b60200260200101519050611d528585836000613bb9565b95945050505050565b611d63613c6e565b6110c26000613cc8565b82611d7781613540565b611d945760405163932d94f760e01b815260040160405180910390fd5b611d9d84611c12565b611dba576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610e3d929190615a58565b6060600082516001600160401b03811115611e1257611e1261503f565b604051908082528060200260200182016040528015611e3b578160200160208202803683370190505b50905060005b8351811015611ec7576001600160a01b03851660009081526098602052604081208551909190869084908110611e7957611e796159bc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611eb457611eb46159bc565b6020908102919091010152600101611e41565b509392505050565b606654600290600490811603611ef85760405163840a48d560e01b815260040160405180910390fd5b611f00613607565b8560005b81811015611f7a57611f72898983818110611f2157611f216159bc565b9050602002810190611f339190615ced565b611f3c90615d03565b888884818110611f4e57611f4e6159bc565b9050602002810190611f6091906159f2565b88888681811061171b5761171b6159bc565b600101611f04565b5050610f8d600160c955565b6060611f9133610f96565b611fae5760405163a5c7c44560e01b815260040160405180910390fd5b611fb733611c12565b15611fd5576040516311ca333560e31b815260040160405180910390fd5b611fde84611c12565b611ffb576040516325ec6c1f60e01b815260040160405180910390fd5b61200433613d1a565b905061201233858585613f84565b61201c3385613210565b9392505050565b6001600160a01b03808316600090815260a26020908152604080832093851683529281528282208351918201909352915482529061201c90614046565b60608082516001600160401b0381111561207c5761207c61503f565b6040519080825280602002602001820160405280156120a5578160200160208202803683370190505b50915082516001600160401b038111156120c1576120c161503f565b6040519080825280602002602001820160405280156120ea578160200160208202803683370190505b506001600160a01b038086166000908152609a6020526040812054929350911690612116868387612a31565b905060005b85518110156122ed57600061214887838151811061213b5761213b6159bc565b6020026020010151614066565b9050806001600160a01b031663fe243a178989858151811061216c5761216c6159bc565b60200260200101516040518363ffffffff1660e01b81526004016121a69291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e79190615bf3565b8583815181106121f9576121f96159bc565b602002602001018181525050600060a260008a6001600160a01b03166001600160a01b031681526020019081526020016000206000898581518110612240576122406159bc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060405180602001604052908160008201548152505090506122c6868481518110612294576122946159bc565b60200260200101518585815181106122ae576122ae6159bc565b602002602001015183613b1d9092919063ffffffff16565b8784815181106122d8576122d86159bc565b6020908102919091010152505060010161211b565b5050505b9250929050565b600054610100900460ff16158080156123185750600054600160ff909116105b806123325750303b158015612332575060005460ff166001145b61239a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156123bd576000805461ff0019166101001790555b6123c682613170565b6123cf83613cc8565b801561100d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b606061242482610f96565b6124415760405163a5c7c44560e01b815260040160405180910390fd5b61244a82611c12565b15612468576040516311ca333560e31b815260040160405180910390fd5b6001600160a01b03821661248f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b038083166000818152609a6020526040902054909116903314806124be57506124be81613540565b806124e557506001600160a01b038181166000908152609960205260409020600101541633145b61250257604051631e499a2360e11b815260040160405180910390fd5b336001600160a01b0384161461255357806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b61201c83613d1a565b6066546002906004908116036125855760405163840a48d560e01b815260040160405180910390fd5b61258d613607565b6125a161259986615d03565b858585613676565b6125ab600160c955565b5050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125fb576040516323d871a560e01b815260040160405180910390fd5b6001600160a01b03808516600090815260986020908152604080832093871683529290529081205461263a906001600160401b038086169085166140d9565b9050600061264a86868686613bb9565b6126549083615c22565b90506126638660008785613b3e565b6001600160a01b03851673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461174b57604051633b9e9f0160e21b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063ee7a7c0490604401600060405180830381600087803b1580156126f157600080fd5b505af1158015612705573d6000803e3d6000fd5b5050604080516001600160a01b038981168252602082018690528a1693507feff6aab2bc3f7c648896e1522eae71d6c22e3b0e218206b3f40af0e4d204716b92500160405180910390a2505050505050565b61276033610f96565b1561277e57604051633bf2b50360e11b815260040160405180910390fd5b61278783611c12565b6127a4576040516325ec6c1f60e01b815260040160405180910390fd5b6127b033848484613f84565b61100d3384613210565b6060600083516001600160401b038111156127d7576127d761503f565b60405190808252806020026020018201604052801561280a57816020015b60608152602001906001900390816127f55790505b50905060005b8451811015611ec75761283c85828151811061282e5761282e6159bc565b602002602001015185611df5565b82828151811061284e5761284e6159bc565b6020908102919091010152600101612810565b612869613c6e565b6001600160a01b0381166128ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612391565b6128d781613cc8565b50565b60006128e46140f2565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296b9190615d0f565b6001600160a01b0316336001600160a01b03161461299c5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146129c35760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6000612a0c6140f2565b60405161190160f01b60208201526022810191909152604281018390526062016110d7565b6060600082516001600160401b03811115612a4e57612a4e61503f565b604051908082528060200260200182016040528015612a77578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b8152600401612aca929190615c35565b600060405180830381865afa158015612ae7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b0f9190810190615c59565b905060005b8451811015610c2257612b5a87868381518110612b3357612b336159bc565b6020026020010151848481518110612b4d57612b4d6159bc565b6020026020010151613319565b838281518110612b6c57612b6c6159bc565b6020908102919091010152600101612b14565b60006001600160a01b038616612ba8576040516339b190bb60e11b815260040160405180910390fd5b8351600003612bca5760405163796cc52560e01b815260040160405180910390fd5b600084516001600160401b03811115612be557612be561503f565b604051908082528060200260200182016040528015612c0e578160200160208202803683370190505b509050600085516001600160401b03811115612c2c57612c2c61503f565b604051908082528060200260200182016040528015612c55578160200160208202803683370190505b50905060005b8651811015612f9e576000612c7b88838151811061213b5761213b6159bc565b9050600060a260008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a8581518110612cb857612cb86159bc565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250509050816001600160a01b031663fe243a178c8b8681518110612d1957612d196159bc565b60200260200101516040518363ffffffff1660e01b8152600401612d539291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d949190615bf3565b888481518110612da657612da66159bc565b60200260200101511115612dcd5760405163f020e5b960e01b815260040160405180910390fd5b612dfc888481518110612de257612de26159bc565b60200260200101518885815181106122ae576122ae6159bc565b848481518110612e0e57612e0e6159bc565b602002602001018181525050612e56848481518110612e2f57612e2f6159bc565b6020026020010151888581518110612e4957612e496159bc565b60200260200101516141d8565b858481518110612e6857612e686159bc565b60209081029190910101526001600160a01b038a1615612efd57612ebf8a8a8581518110612e9857612e986159bc565b6020026020010151878681518110612eb257612eb26159bc565b60200260200101516141f4565b612efd8a8c8b8681518110612ed657612ed66159bc565b6020026020010151878781518110612ef057612ef06159bc565b6020026020010151613b3e565b816001600160a01b031663724af4238c8b8681518110612f1f57612f1f6159bc565b60200260200101518b8781518110612f3957612f396159bc565b60200260200101516040518463ffffffff1660e01b8152600401612f5f93929190615d2c565b600060405180830381600087803b158015612f7957600080fd5b505af1158015612f8d573d6000803e3d6000fd5b505050505050806001019050612c5b565b506001600160a01b0388166000908152609f60205260408120805491829190612fc683615d50565b919050555060006040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff168152602001898152602001858152509050600061302e826110c4565b6000818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a0850151805193945085936130e59260058501920190614cc7565b5060c08201518051613101916006840191602090910190614d2c565b5050506001600160a01b038b16600090815260a3602052604090206131269082614284565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e3081838660405161315a93929190615d69565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6001600160a01b0382811660008181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c691016129f6565b6066546000906001908116036132395760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038381166000818152609a602052604080822080546001600160a01b0319169487169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061329885611905565b9150915060006132a9868685612a31565b905060005b8351811015610f8d5761331186888684815181106132ce576132ce6159bc565b602002602001015160008786815181106132ea576132ea6159bc565b6020026020010151878781518110613304576133046159bc565b60200260200101516133ff565b6001016132ae565b600073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016133ef5760405163a3d75e0960e01b81526001600160a01b0385811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa1580156133ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cf9190615a87565b90506133e76001600160401b03848116908316613b08565b91505061201c565b506001600160401b031692915050565b8060000361342057604051630a33bc6960e21b815260040160405180910390fd5b6001600160a01b03808616600090815260a26020908152604080832093881683529290522061345181858585614290565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061348f90614046565b60405161349e93929190615d2c565b60405180910390a16134af86610f96565b15610f8d576001600160a01b038088166000908152609860209081526040808320938916835292905290812080548592906134eb908490615c22565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c87878660405161352f93929190615d2c565b60405180910390a250505050505050565b604051631beb2b9760e31b81526001600160a01b038281166004830152336024830152306044830152600080356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303816000875af11580156135ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c469190615a3b565b6060600061201c83614309565b600061201c8383613b08565b600260c954036136595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401612391565b600260c955565b6000611c46825490565b600061201c8383614365565b60a084015151821461369b576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146136d1576040516316110d3560e21b815260040160405180910390fd5b60006136dc856110c4565b6000818152609e602052604090205490915060ff1661370e576040516387c9d21960e01b815260040160405180910390fd5b606060007f000000000000000000000000000000000000000000000000000000000000000087608001516137429190615d94565b90504363ffffffff168163ffffffff161115613771576040516378f67ae160e11b815260040160405180910390fd5b613789876000015188602001518960a001518461438f565b87516001600160a01b039081166000908152609a60205260408120548a5160a08c015194965092169350916137c091908490612a31565b905060005b8860a0015151811015613a225760006137ed8a60a00151838151811061213b5761213b6159bc565b905060006138248b60c00151848151811061380a5761380a6159bc565b6020026020010151878581518110611457576114576159bc565b905087156138fa57816001600160a01b0316632eae418c8c600001518d60a001518681518110613856576138566159bc565b60200260200101518d8d88818110613870576138706159bc565b90506020020160208101906138859190614fe9565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b1580156138dd57600080fd5b505af11580156138f1573d6000803e3d6000fd5b50505050613a18565b600080836001600160a01b031663c4623ea18e600001518f60a001518881518110613927576139276159bc565b60200260200101518f8f8a818110613941576139416159bc565b90506020020160208101906139569190614fe9565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152918316602483015290911660448201526064810186905260840160408051808303816000875af11580156139b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d69190615db0565b91509150613a15878e600001518f60a0015188815181106139f9576139f96159bc565b602002602001015185858b8b81518110613304576133046159bc565b50505b50506001016137c5565b5087516001600160a01b0316600090815260a360205260409020613a4690856144c4565b50600084815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613a9e6005830182614d67565b613aac600683016000614d67565b50506000848152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613af69086815260200190565b60405180910390a15050505050505050565b600061201c8383670de0b6b3a76400006144d0565b6000613b36826118d1613b2f87614046565b8690613b08565b949350505050565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613b75908490615dd4565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610e3d93929190615d2c565b6001600160a01b03808516600090815260a56020908152604080832093871683529290529081208190613beb906145ba565b90506000613c47613c1c7f000000000000000000000000000000000000000000000000000000000000000043615de7565b6001600160a01b03808a16600090815260a560209081526040808320938c16835292905220906145d5565b90506000613c558284615dd4565b9050613c628187876145f2565b98975050505050505050565b6033546001600160a01b031633146110c25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612391565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606654606090600190600290811603613d465760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084166000818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a3600080613da786611905565b915091508151600003613dbc57505050613f7e565b81516001600160401b03811115613dd557613dd561503f565b604051908082528060200260200182016040528015613dfe578160200160208202803683370190505b5094506000613e0e878585612a31565b905060005b8351811015613f78576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050868481518110613e9657613e966159bc565b602002602001015183600081518110613eb157613eb16159bc565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613ee357613ee36159bc565b602002602001015182600081518110613efe57613efe6159bc565b602002602001018181525050848481518110613f1c57613f1c6159bc565b602002602001015181600081518110613f3757613f376159bc565b602002602001018181525050613f508b89858585612b7f565b8a8581518110613f6257613f626159bc565b6020908102919091010152505050600101613e13565b50505050505b50919050565b6001600160a01b038084166000908152609960205260409020600101541680613fad57506118ff565b6001600160a01b0381166000908152609c6020908152604080832085845290915290205460ff1615613ff257604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381166000908152609c602090815260408083208584528252909120805460ff191660011790558301516125ab90829061403a9088908890849088906108bc565b85516020870151614611565b805160009015614057578151611c46565b670de0b6b3a764000092915050565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146140b2577f0000000000000000000000000000000000000000000000000000000000000000611c46565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b60006140e88483856001614663565b613b369085615dd4565b60007f000000000000000000000000000000000000000000000000000000000000000046146141b35750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000816000036141ea57506000611c46565b61201c83836146b4565b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461100d576001600160a01b03808416600090815260a5602090815260408083209386168352929052908120614248906145ba565b90506118ff436142588484615c22565b6001600160a01b03808816600090815260a560209081526040808320938a1683529290522091906146c9565b600061201c83836146d4565b826000036142b1576142aa670de0b6b3a7640000826146b4565b84556118ff565b6040805160208101909152845481526000906142ce908584613b1d565b905060006142dc8483615c22565b905060006142fe846142f86142f1888a615c22565b85906146b4565b906146b4565b875550505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561435957602002820191906000526020600020905b815481526020019060010190808311614345575b50505050509050919050565b600082600001828154811061437c5761437c6159bc565b9060005260206000200154905092915050565b6060600083516001600160401b038111156143ac576143ac61503f565b6040519080825280602002602001820160405280156143d5578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b815260040161442a93929190615e03565b600060405180830381865afa158015614447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261446f9190810190615c59565b905060005b85518110156144b85761449388878381518110612b3357612b336159bc565b8382815181106144a5576144a56159bc565b6020908102919091010152600101614474565b50909695505050505050565b600061201c8383614723565b600080806000198587098587029250828110838203039150508060000361450a5783828161450057614500615e3d565b049250505061201c565b8084116145515760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612391565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006145c68282614816565b6001600160e01b031692915050565b60006145e283838361485d565b6001600160e01b03169392505050565b6000613b366146018385615e53565b85906001600160401b0316613b08565b4281101561463257604051630819bdcd60e01b815260040160405180910390fd5b6146466001600160a01b03851684846148a7565b6118ff57604051638baa579f60e01b815260040160405180910390fd5b6000806146718686866144d0565b9050600183600281111561468757614687615e72565b1480156146a457506000848061469f5761469f615e3d565b868809115b15611d525761093b600182615c22565b600061201c83670de0b6b3a7640000846144d0565b61100d8383836148fe565b600081815260018301602052604081205461471b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611c46565b506000611c46565b6000818152600183016020526040812054801561480c576000614747600183615dd4565b855490915060009061475b90600190615dd4565b90508181146147c057600086600001828154811061477b5761477b6159bc565b906000526020600020015490508087600001848154811061479e5761479e6159bc565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806147d1576147d1615e88565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611c46565b6000915050611c46565b815460009080156148555761483e84614830600184615dd4565b600091825260209091200190565b5464010000000090046001600160e01b0316613b36565b509092915050565b82546000908161486f86868385614a06565b9050801561489d5761488686614830600184615dd4565b5464010000000090046001600160e01b031661093b565b5091949350505050565b60008060006148b68585614a5c565b909250905060008160048111156148cf576148cf615e72565b1480156148ed5750856001600160a01b0316826001600160a01b0316145b8061093b575061093b868686614a9e565b825480156149b757600061491785614830600185615dd4565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b03166020840152919250908516101561496a5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149b5578261498b86614830600186615dd4565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187556000968752952091519051909216640100000000029190921617910155565b60005b81831015611ec7576000614a1d8484614b8a565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a4857809250614a56565b614a53816001615c22565b93505b50614a09565b6000808251604103614a925760208301516040840151606085015160001a614a8687828585614ba5565b945094505050506122f1565b506000905060026122f1565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401614ac8929190615ec2565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614b069190615efc565b600060405180830381855afa9150503d8060008114614b41576040519150601f19603f3d011682016040523d82523d6000602084013e614b46565b606091505b5091509150818015614b5a57506020815110155b801561093b57508051630b135d3f60e11b90614b7f9083016020908101908401615bf3565b149695505050505050565b6000614b996002848418615f0e565b61201c90848416615c22565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614bdc5750600090506003614c60565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614c30573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614c5957600060019250925050614c60565b9150600090505b94509492505050565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600063ffffffff16815260200160608152602001606081525090565b828054828255906000526020600020908101928215614d1c579160200282015b82811115614d1c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614ce7565b50614d28929150614d81565b5090565b828054828255906000526020600020908101928215614d1c579160200282015b82811115614d1c578251825591602001919060010190614d4c565b50805460008255906000526020600020908101906128d791905b5b80821115614d285760008155600101614d82565b6001600160a01b03811681146128d757600080fd5b8035614db681614d96565b919050565b600080600080600060a08688031215614dd357600080fd5b8535614dde81614d96565b94506020860135614dee81614d96565b93506040860135614dfe81614d96565b94979396509394606081013594506080013592915050565b60008083601f840112614e2857600080fd5b5081356001600160401b03811115614e3f57600080fd5b6020830191508360208260051b85010111156122f157600080fd5b60008060208385031215614e6d57600080fd5b82356001600160401b03811115614e8357600080fd5b614e8f85828601614e16565b90969095509350505050565b602080825282518282018190526000918401906040840190835b81811015610c22578351835260209384019390920191600101614eb5565b600060208284031215614ee557600080fd5b5035919050565b803563ffffffff81168114614db657600080fd5b60008083601f840112614f1257600080fd5b5081356001600160401b03811115614f2957600080fd5b6020830191508360208285010111156122f157600080fd5b60008060008060608587031215614f5757600080fd5b8435614f6281614d96565b9350614f7060208601614eec565b925060408501356001600160401b03811115614f8b57600080fd5b614f9787828801614f00565b95989497509550505050565b60008060008060808587031215614fb957600080fd5b8435614fc481614d96565b93506020850135614fd481614d96565b93969395505050506040820135916060013590565b600060208284031215614ffb57600080fd5b813561201c81614d96565b6000806040838503121561501957600080fd5b823561502481614d96565b9150602083013561503481614d96565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156150775761507761503f565b60405290565b604080519081016001600160401b03811182821017156150775761507761503f565b604051601f8201601f191681016001600160401b03811182821017156150c7576150c761503f565b604052919050565b60006001600160401b038211156150e8576150e861503f565b5060051b60200190565b600082601f83011261510357600080fd5b8135615116615111826150cf565b61509f565b8082825260208201915060208360051b86010192508583111561513857600080fd5b602085015b8381101561515e57803561515081614d96565b83526020928301920161513d565b5095945050505050565b600082601f83011261517957600080fd5b8135615187615111826150cf565b8082825260208201915060208360051b8601019250858311156151a957600080fd5b602085015b8381101561515e5780358352602092830192016151ae565b600060e082840312156151d857600080fd5b6151e0615055565b90506151eb82614dab565b81526151f960208301614dab565b602082015261520a60408301614dab565b60408201526060828101359082015261522560808301614eec565b608082015260a08201356001600160401b0381111561524357600080fd5b61524f848285016150f2565b60a08301525060c08201356001600160401b0381111561526e57600080fd5b61527a84828501615168565b60c08301525092915050565b60006020828403121561529857600080fd5b81356001600160401b038111156152ae57600080fd5b613b36848285016151c6565b6000602082840312156152cc57600080fd5b813560ff8116811461201c57600080fd5b600081518084526020840193506020830160005b828110156153185781516001600160a01b03168652602095860195909101906001016152f1565b5093949350505050565b600081518084526020840193506020830160005b82811015615318578151865260209586019590910190600101615336565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916153a09085018263ffffffff169052565b5060a082015160e060a08501526153ba60e08501826152dd565b905060c083015184820360c0860152611d528282615322565b600082825180855260208501945060208160051b8301016020850160005b838110156144b857601f1985840301885261540d838351615322565b60209889019890935091909101906001016153f1565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b8281101561547c57605f19878603018452615467858351615354565b9450602093840193919091019060010161544b565b505050508281036020840152611d5281856153d3565b6000806000806000606086880312156154aa57600080fd5b85356001600160401b038111156154c057600080fd5b6154cc88828901614e16565b90965094505060208601356001600160401b038111156154eb57600080fd5b6154f788828901614e16565b96999598509660400135949350505050565b6001600160401b03811681146128d757600080fd5b6000806000806080858703121561553457600080fd5b843561553f81614d96565b935060208501359250604085013561555681615509565b9396929550929360600135925050565b60408152600061557960408301856152dd565b8281036020840152611d528185615322565b6000806000604084860312156155a057600080fd5b83356155ab81614d96565b925060208401356001600160401b038111156155c657600080fd5b6155d286828701614f00565b9497909650939450505050565b600080604083850312156155f257600080fd5b82356155fd81614d96565b915060208301356001600160401b0381111561561857600080fd5b615624858286016150f2565b9150509250929050565b60208152600061201c6020830184615322565b6000806000806000806060878903121561565a57600080fd5b86356001600160401b0381111561567057600080fd5b61567c89828a01614e16565b90975095505060208701356001600160401b0381111561569b57600080fd5b6156a789828a01614e16565b90955093505060408701356001600160401b038111156156c657600080fd5b6156d289828a01614e16565b979a9699509497509295939492505050565b6000806000606084860312156156f957600080fd5b833561570481614d96565b925060208401356001600160401b0381111561571f57600080fd5b84016040818703121561573157600080fd5b61573961507d565b81356001600160401b0381111561574f57600080fd5b8201601f8101881361576057600080fd5b80356001600160401b038111156157795761577961503f565b61578c601f8201601f191660200161509f565b8181528960208385010111156157a157600080fd5b81602084016020830137600060209282018301528352928301359282019290925293969395505050506040919091013590565b600080604083850312156157e757600080fd5b82356157f281614d96565b946020939093013593505050565b6040815260006155796040830185615322565b80151581146128d757600080fd5b6000806000806060858703121561583757600080fd5b84356001600160401b0381111561584d57600080fd5b850160e0818803121561585f57600080fd5b935060208501356001600160401b0381111561587a57600080fd5b61588687828801614e16565b909450925050604085013561589a81615813565b939692955090935050565b600080600080608085870312156158bb57600080fd5b84356158c681614d96565b935060208501356158d681614d96565b925060408501356158e681615509565b9150606085013561589a81615509565b6000806040838503121561590957600080fd5b82356001600160401b0381111561591f57600080fd5b8301601f8101851361593057600080fd5b803561593e615111826150cf565b8082825260208201915060208360051b85010192508783111561596057600080fd5b6020840193505b8284101561598b57833561597a81614d96565b825260209384019390910190615967565b945050505060208301356001600160401b0381111561561857600080fd5b60208152600061201c60208301846153d3565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126159e857600080fd5b9190910192915050565b6000808335601e19843603018112615a0957600080fd5b8301803591506001600160401b03821115615a2357600080fd5b6020019150600581901b36038213156122f157600080fd5b600060208284031215615a4d57600080fd5b815161201c81615813565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215615a9957600080fd5b815161201c81615509565b60208152600061201c6020830184615354565b600060208284031215615ac957600080fd5b813561201c81615813565b600082601f830112615ae557600080fd5b8151615af3615111826150cf565b8082825260208201915060208360051b860101925085831115615b1557600080fd5b602085015b8381101561515e578051835260209283019201615b1a565b60008060408385031215615b4557600080fd5b82516001600160401b03811115615b5b57600080fd5b8301601f81018513615b6c57600080fd5b8051615b7a615111826150cf565b8082825260208201915060208360051b850101925087831115615b9c57600080fd5b6020840193505b82841015615bc7578351615bb681614d96565b825260209384019390910190615ba3565b8095505050505060208301516001600160401b03811115615be757600080fd5b61562485828601615ad4565b600060208284031215615c0557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611c4657611c46615c0c565b6001600160a01b0383168152604060208201819052600090613b36908301846152dd565b600060208284031215615c6b57600080fd5b81516001600160401b03811115615c8157600080fd5b8201601f81018413615c9257600080fd5b8051615ca0615111826150cf565b8082825260208201915060208360051b850101925086831115615cc257600080fd5b6020840193505b8284101561093b578351615cdc81615509565b825260209384019390910190615cc9565b6000823560de198336030181126159e857600080fd5b6000611c4636836151c6565b600060208284031215615d2157600080fd5b815161201c81614d96565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018201615d6257615d62615c0c565b5060010190565b838152606060208201526000615d826060830185615354565b828103604084015261093b8185615322565b63ffffffff8181168382160190811115611c4657611c46615c0c565b60008060408385031215615dc357600080fd5b505080516020909101519092909150565b81810381811115611c4657611c46615c0c565b63ffffffff8281168282160390811115611c4657611c46615c0c565b6001600160a01b0384168152606060208201819052600090615e27908301856152dd565b905063ffffffff83166040830152949350505050565b634e487b7160e01b600052601260045260246000fd5b6001600160401b038281168282160390811115611c4657611c46615c0c565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60005b83811015615eb9578181015183820152602001615ea1565b50506000910152565b8281526040602082015260008251806040840152615ee7816060850160208701615e9e565b601f01601f1916919091016060019392505050565b600082516159e8818460208701615e9e565b600082615f2b57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212202257542e5b367b004d754a2c5c544b582530225b8dde4f312d7e63a4ea5e585864736f6c634300081b0033", } // ContractDelegationManagerABI is the input ABI used to generate the binding from. @@ -75,7 +68,7 @@ var ContractDelegationManagerABI = ContractDelegationManagerMetaData.ABI 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, _avsDirectory common.Address, _strategyManager common.Address, _eigenPodManager common.Address, _allocationManager common.Address, _pauserRegistry common.Address, _MIN_WITHDRAWAL_DELAY uint32) (common.Address, *types.Transaction, *ContractDelegationManager, error) { +func DeployContractDelegationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _avsDirectory common.Address, _strategyManager common.Address, _eigenPodManager common.Address, _allocationManager common.Address, _pauserRegistry common.Address, _permissionController common.Address, _MIN_WITHDRAWAL_DELAY uint32) (common.Address, *types.Transaction, *ContractDelegationManager, error) { parsed, err := ContractDelegationManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -84,7 +77,7 @@ func DeployContractDelegationManager(auth *bind.TransactOpts, backend bind.Contr return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractDelegationManagerBin), backend, _avsDirectory, _strategyManager, _eigenPodManager, _allocationManager, _pauserRegistry, _MIN_WITHDRAWAL_DELAY) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractDelegationManagerBin), backend, _avsDirectory, _strategyManager, _eigenPodManager, _allocationManager, _pauserRegistry, _permissionController, _MIN_WITHDRAWAL_DELAY) if err != nil { return common.Address{}, nil, nil, err } @@ -128,8 +121,6 @@ type ContractDelegationManagerCalls interface { EigenPodManager(opts *bind.CallOpts) (common.Address, error) - GetBeaconChainSlashingFactor(opts *bind.CallOpts, staker common.Address) (uint64, error) - GetDepositedShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) GetOperatorShares(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]*big.Int, error) @@ -141,6 +132,8 @@ type ContractDelegationManagerCalls interface { Shares [][]*big.Int }, error) + GetSlashableSharesInQueue(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) + GetWithdrawableShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address) (struct { WithdrawableShares []*big.Int DepositShares []*big.Int @@ -150,8 +143,6 @@ type ContractDelegationManagerCalls interface { IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) - OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerTypesOperatorDetails, error) - OperatorShares(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) Owner(opts *bind.CallOpts) (common.Address, error) @@ -164,6 +155,8 @@ type ContractDelegationManagerCalls interface { PendingWithdrawals(opts *bind.CallOpts, withdrawalRoot [32]byte) (bool, error) + PermissionController(opts *bind.CallOpts) (common.Address, error) + QueuedWithdrawals(opts *bind.CallOpts, withdrawalRoot [32]byte) (struct { Staker common.Address DelegatedTo common.Address @@ -177,27 +170,23 @@ type ContractDelegationManagerCalls interface { // ContractDelegationManagerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractDelegationManagerTransacts interface { - CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, arg2 *big.Int, receiveAsTokens bool) (*types.Transaction, error) - - CompleteQueuedWithdrawal0(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) - - CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, arg2 []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) + BurnOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) - CompleteQueuedWithdrawals0(opts *bind.TransactOpts, tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) + CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) - CompleteQueuedWithdrawals1(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) + CompleteQueuedWithdrawals(opts *bind.TransactOpts, tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) - DecreaseBeaconChainScalingFactor(opts *bind.TransactOpts, staker common.Address, existingDepositShares *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) + CompleteQueuedWithdrawals0(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) - DecreaseOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, wadSlashed *big.Int) (*types.Transaction, error) + DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, curDepositShares *big.Int, prevBeaconChainSlashingFactor uint64, wadSlashed *big.Int) (*types.Transaction, error) DelegateTo(opts *bind.TransactOpts, operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) - IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, existingDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) + IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) - ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) + ModifyOperatorDetails(opts *bind.TransactOpts, operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) @@ -205,7 +194,9 @@ type ContractDelegationManagerTransacts interface { QueueWithdrawals(opts *bind.TransactOpts, params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) - RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerTypesOperatorDetails, allocationDelay uint32, metadataURI string) (*types.Transaction, error) + Redelegate(opts *bind.TransactOpts, newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) + + RegisterAsOperator(opts *bind.TransactOpts, initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) @@ -215,14 +206,14 @@ type ContractDelegationManagerTransacts interface { Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) - UpdateOperatorMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) + UpdateOperatorMetadataURI(opts *bind.TransactOpts, operator common.Address, metadataURI string) (*types.Transaction, error) } // ContractDelegationManagerFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. type ContractDelegationManagerFilters interface { - FilterBeaconChainScalingFactorDecreased(opts *bind.FilterOpts) (*ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator, error) - WatchBeaconChainScalingFactorDecreased(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerBeaconChainScalingFactorDecreased) (event.Subscription, error) - ParseBeaconChainScalingFactorDecreased(log types.Log) (*ContractDelegationManagerBeaconChainScalingFactorDecreased, error) + FilterDelegationApproverUpdated(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerDelegationApproverUpdatedIterator, error) + WatchDelegationApproverUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerDelegationApproverUpdated, operator []common.Address) (event.Subscription, error) + ParseDelegationApproverUpdated(log types.Log) (*ContractDelegationManagerDelegationApproverUpdated, error) FilterDepositScalingFactorUpdated(opts *bind.FilterOpts) (*ContractDelegationManagerDepositScalingFactorUpdatedIterator, error) WatchDepositScalingFactorUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerDepositScalingFactorUpdated) (event.Subscription, error) @@ -232,10 +223,6 @@ type ContractDelegationManagerFilters interface { WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerInitialized) (event.Subscription, error) ParseInitialized(log types.Log) (*ContractDelegationManagerInitialized, error) - FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorDetailsModifiedIterator, error) - WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorDetailsModified, operator []common.Address) (event.Subscription, error) - ParseOperatorDetailsModified(log types.Log) (*ContractDelegationManagerOperatorDetailsModified, error) - FilterOperatorMetadataURIUpdated(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorMetadataURIUpdatedIterator, error) WatchOperatorMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorMetadataURIUpdated, operator []common.Address) (event.Subscription, error) ParseOperatorMetadataURIUpdated(log types.Log) (*ContractDelegationManagerOperatorMetadataURIUpdated, error) @@ -244,6 +231,10 @@ type ContractDelegationManagerFilters interface { WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorRegistered, operator []common.Address) (event.Subscription, error) ParseOperatorRegistered(log types.Log) (*ContractDelegationManagerOperatorRegistered, error) + FilterOperatorSharesBurned(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorSharesBurnedIterator, error) + WatchOperatorSharesBurned(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorSharesBurned, operator []common.Address) (event.Subscription, error) + ParseOperatorSharesBurned(log types.Log) (*ContractDelegationManagerOperatorSharesBurned, error) + FilterOperatorSharesDecreased(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorSharesDecreasedIterator, error) WatchOperatorSharesDecreased(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorSharesDecreased, operator []common.Address) (event.Subscription, error) ParseOperatorSharesDecreased(log types.Log) (*ContractDelegationManagerOperatorSharesDecreased, error) @@ -873,37 +864,6 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) EigenP return _ContractDelegationManager.Contract.EigenPodManager(&_ContractDelegationManager.CallOpts) } -// GetBeaconChainSlashingFactor is a free data retrieval call binding the contract method 0x26f5e75b. -// -// Solidity: function getBeaconChainSlashingFactor(address staker) view returns(uint64) -func (_ContractDelegationManager *ContractDelegationManagerCaller) GetBeaconChainSlashingFactor(opts *bind.CallOpts, staker common.Address) (uint64, error) { - var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "getBeaconChainSlashingFactor", staker) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetBeaconChainSlashingFactor is a free data retrieval call binding the contract method 0x26f5e75b. -// -// Solidity: function getBeaconChainSlashingFactor(address staker) view returns(uint64) -func (_ContractDelegationManager *ContractDelegationManagerSession) GetBeaconChainSlashingFactor(staker common.Address) (uint64, error) { - return _ContractDelegationManager.Contract.GetBeaconChainSlashingFactor(&_ContractDelegationManager.CallOpts, staker) -} - -// GetBeaconChainSlashingFactor is a free data retrieval call binding the contract method 0x26f5e75b. -// -// Solidity: function getBeaconChainSlashingFactor(address staker) view returns(uint64) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetBeaconChainSlashingFactor(staker common.Address) (uint64, error) { - return _ContractDelegationManager.Contract.GetBeaconChainSlashingFactor(&_ContractDelegationManager.CallOpts, staker) -} - // GetDepositedShares is a free data retrieval call binding the contract method 0x66d5ba93. // // Solidity: function getDepositedShares(address staker) view returns(address[], uint256[]) @@ -1043,6 +1003,37 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetQue return _ContractDelegationManager.Contract.GetQueuedWithdrawals(&_ContractDelegationManager.CallOpts, staker) } +// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448. +// +// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) GetSlashableSharesInQueue(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "getSlashableSharesInQueue", operator, strategy) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448. +// +// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.GetSlashableSharesInQueue(&_ContractDelegationManager.CallOpts, operator, strategy) +} + +// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448. +// +// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) { + return _ContractDelegationManager.Contract.GetSlashableSharesInQueue(&_ContractDelegationManager.CallOpts, operator, strategy) +} + // GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac. // // Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares) @@ -1150,37 +1141,6 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) IsOper 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) (IDelegationManagerTypesOperatorDetails, error) { - var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "operatorDetails", operator) - - if err != nil { - return *new(IDelegationManagerTypesOperatorDetails), err - } - - out0 := *abi.ConvertType(out[0], new(IDelegationManagerTypesOperatorDetails)).(*IDelegationManagerTypesOperatorDetails) - - 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) (IDelegationManagerTypesOperatorDetails, 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) (IDelegationManagerTypesOperatorDetails, error) { - return _ContractDelegationManager.Contract.OperatorDetails(&_ContractDelegationManager.CallOpts, operator) -} - // OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. // // Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares) @@ -1367,6 +1327,37 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Pendin return _ContractDelegationManager.Contract.PendingWithdrawals(&_ContractDelegationManager.CallOpts, withdrawalRoot) } +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "permissionController") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) PermissionController() (common.Address, error) { + return _ContractDelegationManager.Contract.PermissionController(&_ContractDelegationManager.CallOpts) +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) PermissionController() (common.Address, error) { + return _ContractDelegationManager.Contract.PermissionController(&_ContractDelegationManager.CallOpts) +} + // QueuedWithdrawals is a free data retrieval call binding the contract method 0x99f5371b. // // Solidity: function queuedWithdrawals(bytes32 withdrawalRoot) view returns(address staker, address delegatedTo, address withdrawer, uint256 nonce, uint32 startBlock) @@ -1458,151 +1449,109 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Strate return _ContractDelegationManager.Contract.StrategyManager(&_ContractDelegationManager.CallOpts) } -// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// BurnOperatorShares is a paid mutator transaction binding the contract method 0xee74937f. // -// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 , bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, arg2 *big.Int, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, arg2, receiveAsTokens) +// Solidity: function burnOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) BurnOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "burnOperatorShares", operator, strategy, prevMaxMagnitude, newMaxMagnitude) } -// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// BurnOperatorShares is a paid mutator transaction binding the contract method 0xee74937f. // -// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 , bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, arg2 *big.Int, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, arg2, receiveAsTokens) +// Solidity: function burnOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) BurnOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.BurnOperatorShares(&_ContractDelegationManager.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude) } -// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// BurnOperatorShares is a paid mutator transaction binding the contract method 0xee74937f. // -// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 , bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, arg2 *big.Int, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, arg2, receiveAsTokens) +// Solidity: function burnOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) BurnOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.BurnOperatorShares(&_ContractDelegationManager.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude) } -// CompleteQueuedWithdrawal0 is a paid mutator transaction binding the contract method 0xe4cc3f90. +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90. // // Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawal0(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal0", withdrawal, tokens, receiveAsTokens) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawal0 is a paid mutator transaction binding the contract method 0xe4cc3f90. +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90. // // Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawal0(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal0(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens) +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawal0 is a paid mutator transaction binding the contract method 0xe4cc3f90. +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90. // // Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawal0(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal0(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, 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[] , bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, arg2 []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, arg2, receiveAsTokens) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, 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[] , bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, arg2 []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, arg2, 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[] , bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, arg2 []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, arg2, receiveAsTokens) -} - -// CompleteQueuedWithdrawals0 is a paid mutator transaction binding the contract method 0x5f48e667. +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5f48e667. // // Solidity: function completeQueuedWithdrawals(address[][] tokens, bool[] receiveAsTokens, uint256 numToComplete) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals0(opts *bind.TransactOpts, tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals0", tokens, receiveAsTokens, numToComplete) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", tokens, receiveAsTokens, numToComplete) } -// CompleteQueuedWithdrawals0 is a paid mutator transaction binding the contract method 0x5f48e667. +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5f48e667. // // Solidity: function completeQueuedWithdrawals(address[][] tokens, bool[] receiveAsTokens, uint256 numToComplete) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals0(tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals0(&_ContractDelegationManager.TransactOpts, tokens, receiveAsTokens, numToComplete) +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals(tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, tokens, receiveAsTokens, numToComplete) } -// CompleteQueuedWithdrawals0 is a paid mutator transaction binding the contract method 0x5f48e667. +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5f48e667. // // Solidity: function completeQueuedWithdrawals(address[][] tokens, bool[] receiveAsTokens, uint256 numToComplete) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals0(tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals0(&_ContractDelegationManager.TransactOpts, tokens, receiveAsTokens, numToComplete) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals(tokens [][]common.Address, receiveAsTokens []bool, numToComplete *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, tokens, receiveAsTokens, numToComplete) } -// CompleteQueuedWithdrawals1 is a paid mutator transaction binding the contract method 0x9435bb43. +// CompleteQueuedWithdrawals0 is a paid mutator transaction binding the contract method 0x9435bb43. // // Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals1(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals1", withdrawals, tokens, receiveAsTokens) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals0(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals0", withdrawals, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawals1 is a paid mutator transaction binding the contract method 0x9435bb43. +// CompleteQueuedWithdrawals0 is a paid mutator transaction binding the contract method 0x9435bb43. // // Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals1(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals1(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens) +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals0(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals0(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawals1 is a paid mutator transaction binding the contract method 0x9435bb43. +// CompleteQueuedWithdrawals0 is a paid mutator transaction binding the contract method 0x9435bb43. // // Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals1(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals1(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens) -} - -// DecreaseBeaconChainScalingFactor is a paid mutator transaction binding the contract method 0x5d9aed23. -// -// Solidity: function decreaseBeaconChainScalingFactor(address staker, uint256 existingDepositShares, uint64 proportionOfOldBalance) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) DecreaseBeaconChainScalingFactor(opts *bind.TransactOpts, staker common.Address, existingDepositShares *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "decreaseBeaconChainScalingFactor", staker, existingDepositShares, proportionOfOldBalance) -} - -// DecreaseBeaconChainScalingFactor is a paid mutator transaction binding the contract method 0x5d9aed23. -// -// Solidity: function decreaseBeaconChainScalingFactor(address staker, uint256 existingDepositShares, uint64 proportionOfOldBalance) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) DecreaseBeaconChainScalingFactor(staker common.Address, existingDepositShares *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.DecreaseBeaconChainScalingFactor(&_ContractDelegationManager.TransactOpts, staker, existingDepositShares, proportionOfOldBalance) -} - -// DecreaseBeaconChainScalingFactor is a paid mutator transaction binding the contract method 0x5d9aed23. -// -// Solidity: function decreaseBeaconChainScalingFactor(address staker, uint256 existingDepositShares, uint64 proportionOfOldBalance) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DecreaseBeaconChainScalingFactor(staker common.Address, existingDepositShares *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.DecreaseBeaconChainScalingFactor(&_ContractDelegationManager.TransactOpts, staker, existingDepositShares, proportionOfOldBalance) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals0(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals0(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens) } -// DecreaseOperatorShares is a paid mutator transaction binding the contract method 0xb6f73bdf. +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x63ceb57d. // -// Solidity: function decreaseOperatorShares(address operator, address strategy, uint256 wadSlashed) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) DecreaseOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, wadSlashed *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "decreaseOperatorShares", operator, strategy, wadSlashed) +// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 prevBeaconChainSlashingFactor, uint256 wadSlashed) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, curDepositShares *big.Int, prevBeaconChainSlashingFactor uint64, wadSlashed *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, curDepositShares, prevBeaconChainSlashingFactor, wadSlashed) } -// DecreaseOperatorShares is a paid mutator transaction binding the contract method 0xb6f73bdf. +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x63ceb57d. // -// Solidity: function decreaseOperatorShares(address operator, address strategy, uint256 wadSlashed) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) DecreaseOperatorShares(operator common.Address, strategy common.Address, wadSlashed *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.DecreaseOperatorShares(&_ContractDelegationManager.TransactOpts, operator, strategy, wadSlashed) +// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 prevBeaconChainSlashingFactor, uint256 wadSlashed) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, prevBeaconChainSlashingFactor uint64, wadSlashed *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DecreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, curDepositShares, prevBeaconChainSlashingFactor, wadSlashed) } -// DecreaseOperatorShares is a paid mutator transaction binding the contract method 0xb6f73bdf. +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x63ceb57d. // -// Solidity: function decreaseOperatorShares(address operator, address strategy, uint256 wadSlashed) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DecreaseOperatorShares(operator common.Address, strategy common.Address, wadSlashed *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.DecreaseOperatorShares(&_ContractDelegationManager.TransactOpts, operator, strategy, wadSlashed) +// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 prevBeaconChainSlashingFactor, uint256 wadSlashed) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, prevBeaconChainSlashingFactor uint64, wadSlashed *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DecreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, curDepositShares, prevBeaconChainSlashingFactor, wadSlashed) } // DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. @@ -1628,23 +1577,23 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) De // IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2. // -// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 existingDepositShares, uint256 addedShares) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, existingDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, existingDepositShares, addedShares) +// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, prevDepositShares, addedShares) } // IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2. // -// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 existingDepositShares, uint256 addedShares) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, existingDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, existingDepositShares, addedShares) +// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, prevDepositShares, addedShares) } // IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2. // -// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 existingDepositShares, uint256 addedShares) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, existingDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, existingDepositShares, addedShares) +// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, prevDepositShares, addedShares) } // Initialize is a paid mutator transaction binding the contract method 0xcd6dc687. @@ -1668,25 +1617,25 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) In return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, initialPausedStatus) } -// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c. // -// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "modifyOperatorDetails", newOperatorDetails) +// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "modifyOperatorDetails", operator, newDelegationApprover) } -// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c. // -// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, newOperatorDetails) +// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, operator, newDelegationApprover) } -// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c. // -// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, newOperatorDetails) +// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, operator, newDelegationApprover) } // Pause is a paid mutator transaction binding the contract method 0x136439dd. @@ -1752,25 +1701,46 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Qu return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, params) } -// RegisterAsOperator is a paid mutator transaction binding the contract method 0x49730060. +// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433. +// +// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) Redelegate(opts *bind.TransactOpts, newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "redelegate", newOperator, newOperatorApproverSig, approverSalt) +} + +// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433. +// +// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots) +func (_ContractDelegationManager *ContractDelegationManagerSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Redelegate(&_ContractDelegationManager.TransactOpts, newOperator, newOperatorApproverSig, approverSalt) +} + +// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433. // -// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, uint32 allocationDelay, string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerTypesOperatorDetails, allocationDelay uint32, metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "registerAsOperator", registeringOperatorDetails, allocationDelay, metadataURI) +// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Redelegate(&_ContractDelegationManager.TransactOpts, newOperator, newOperatorApproverSig, approverSalt) } -// RegisterAsOperator is a paid mutator transaction binding the contract method 0x49730060. +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888. // -// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, uint32 allocationDelay, string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerTypesOperatorDetails, allocationDelay uint32, metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, registeringOperatorDetails, allocationDelay, metadataURI) +// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "registerAsOperator", initDelegationApprover, allocationDelay, metadataURI) } -// RegisterAsOperator is a paid mutator transaction binding the contract method 0x49730060. +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888. // -// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, uint32 allocationDelay, string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerTypesOperatorDetails, allocationDelay uint32, metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, registeringOperatorDetails, allocationDelay, metadataURI) +// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, initDelegationApprover, allocationDelay, metadataURI) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888. +// +// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, initDelegationApprover, allocationDelay, metadataURI) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -1857,30 +1827,30 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Un return _ContractDelegationManager.Contract.Unpause(&_ContractDelegationManager.TransactOpts, newPausedStatus) } -// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5. // -// 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) +// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, operator common.Address, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "updateOperatorMetadataURI", operator, metadataURI) } -// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5. // -// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) +// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, operator, metadataURI) } -// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5. // -// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) +// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, operator, metadataURI) } -// ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator is returned from FilterBeaconChainScalingFactorDecreased and is used to iterate over the raw logs and unpacked data for BeaconChainScalingFactorDecreased events raised by the ContractDelegationManager contract. -type ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator struct { - Event *ContractDelegationManagerBeaconChainScalingFactorDecreased // Event containing the contract specifics and raw log +// ContractDelegationManagerDelegationApproverUpdatedIterator is returned from FilterDelegationApproverUpdated and is used to iterate over the raw logs and unpacked data for DelegationApproverUpdated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerDelegationApproverUpdatedIterator struct { + Event *ContractDelegationManagerDelegationApproverUpdated // 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 @@ -1894,7 +1864,7 @@ type ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator 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 *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Next() bool { +func (it *ContractDelegationManagerDelegationApproverUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1903,7 +1873,7 @@ func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Ne if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerBeaconChainScalingFactorDecreased) + it.Event = new(ContractDelegationManagerDelegationApproverUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1918,7 +1888,7 @@ func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Ne // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerBeaconChainScalingFactorDecreased) + it.Event = new(ContractDelegationManagerDelegationApproverUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1934,42 +1904,52 @@ func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Ne } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Error() error { +func (it *ContractDelegationManagerDelegationApproverUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Close() error { +func (it *ContractDelegationManagerDelegationApproverUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerBeaconChainScalingFactorDecreased represents a BeaconChainScalingFactorDecreased event raised by the ContractDelegationManager contract. -type ContractDelegationManagerBeaconChainScalingFactorDecreased struct { - Staker common.Address - NewBeaconChainScalingFactor uint64 - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerDelegationApproverUpdated represents a DelegationApproverUpdated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerDelegationApproverUpdated struct { + Operator common.Address + NewDelegationApprover common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterBeaconChainScalingFactorDecreased is a free log retrieval operation binding the contract event 0xddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd. +// FilterDelegationApproverUpdated is a free log retrieval operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6. // -// Solidity: event BeaconChainScalingFactorDecreased(address staker, uint64 newBeaconChainScalingFactor) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterBeaconChainScalingFactorDecreased(opts *bind.FilterOpts) (*ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator, error) { +// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterDelegationApproverUpdated(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerDelegationApproverUpdatedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "BeaconChainScalingFactorDecreased") + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "DelegationApproverUpdated", operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator{contract: _ContractDelegationManager.contract, event: "BeaconChainScalingFactorDecreased", logs: logs, sub: sub}, nil + return &ContractDelegationManagerDelegationApproverUpdatedIterator{contract: _ContractDelegationManager.contract, event: "DelegationApproverUpdated", logs: logs, sub: sub}, nil } -// WatchBeaconChainScalingFactorDecreased is a free log subscription operation binding the contract event 0xddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd. +// WatchDelegationApproverUpdated is a free log subscription operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6. // -// Solidity: event BeaconChainScalingFactorDecreased(address staker, uint64 newBeaconChainScalingFactor) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchBeaconChainScalingFactorDecreased(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerBeaconChainScalingFactorDecreased) (event.Subscription, error) { +// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchDelegationApproverUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerDelegationApproverUpdated, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "BeaconChainScalingFactorDecreased") + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "DelegationApproverUpdated", operatorRule) if err != nil { return nil, err } @@ -1979,8 +1959,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchBeacon select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerBeaconChainScalingFactorDecreased) - if err := _ContractDelegationManager.contract.UnpackLog(event, "BeaconChainScalingFactorDecreased", log); err != nil { + event := new(ContractDelegationManagerDelegationApproverUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil { return err } event.Raw = log @@ -2001,12 +1981,12 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchBeacon }), nil } -// ParseBeaconChainScalingFactorDecreased is a log parse operation binding the contract event 0xddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd. +// ParseDelegationApproverUpdated is a log parse operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6. // -// Solidity: event BeaconChainScalingFactorDecreased(address staker, uint64 newBeaconChainScalingFactor) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseBeaconChainScalingFactorDecreased(log types.Log) (*ContractDelegationManagerBeaconChainScalingFactorDecreased, error) { - event := new(ContractDelegationManagerBeaconChainScalingFactorDecreased) - if err := _ContractDelegationManager.contract.UnpackLog(event, "BeaconChainScalingFactorDecreased", log); err != nil { +// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseDelegationApproverUpdated(log types.Log) (*ContractDelegationManagerDelegationApproverUpdated, error) { + event := new(ContractDelegationManagerDelegationApproverUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil { return nil, err } event.Raw = log @@ -2283,9 +2263,9 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseInitia 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 +// 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 @@ -2299,7 +2279,7 @@ type ContractDelegationManagerOperatorDetailsModifiedIterator 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 *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool { +func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2308,7 +2288,7 @@ func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorDetailsModified) + it.Event = new(ContractDelegationManagerOperatorMetadataURIUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2323,7 +2303,7 @@ func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorDetailsModified) + it.Event = new(ContractDelegationManagerOperatorMetadataURIUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2339,52 +2319,52 @@ func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Error() error { +func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Close() error { +func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerOperatorDetailsModified represents a OperatorDetailsModified event raised by the ContractDelegationManager contract. -type ContractDelegationManagerOperatorDetailsModified struct { - Operator common.Address - NewOperatorDetails IDelegationManagerTypesOperatorDetails - Raw types.Log // Blockchain specific contextual infos +// 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 } -// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// FilterOperatorMetadataURIUpdated is a free log retrieval operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. // -// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorDetailsModifiedIterator, error) { +// 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, "OperatorDetailsModified", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorMetadataURIUpdated", operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerOperatorDetailsModifiedIterator{contract: _ContractDelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil + return &ContractDelegationManagerOperatorMetadataURIUpdatedIterator{contract: _ContractDelegationManager.contract, event: "OperatorMetadataURIUpdated", logs: logs, sub: sub}, nil } -// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// WatchOperatorMetadataURIUpdated is a free log subscription operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. // -// 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) { +// 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, "OperatorDetailsModified", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorMetadataURIUpdated", operatorRule) if err != nil { return nil, err } @@ -2394,8 +2374,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperat 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 { + event := new(ContractDelegationManagerOperatorMetadataURIUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { return err } event.Raw = log @@ -2416,21 +2396,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperat }), nil } -// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// ParseOperatorMetadataURIUpdated is a log parse operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. // -// 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 { +// 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 } -// 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 +// 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 @@ -2444,7 +2424,7 @@ type ContractDelegationManagerOperatorMetadataURIUpdatedIterator 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 *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Next() bool { +func (it *ContractDelegationManagerOperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2453,7 +2433,7 @@ func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Next() bo if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorMetadataURIUpdated) + it.Event = new(ContractDelegationManagerOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2468,7 +2448,7 @@ func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Next() bo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorMetadataURIUpdated) + it.Event = new(ContractDelegationManagerOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2484,52 +2464,52 @@ func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Next() bo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Error() error { +func (it *ContractDelegationManagerOperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerOperatorMetadataURIUpdatedIterator) Close() error { +func (it *ContractDelegationManagerOperatorRegisteredIterator) 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 +// ContractDelegationManagerOperatorRegistered represents a OperatorRegistered event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorRegistered struct { + Operator common.Address + DelegationApprover common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorMetadataURIUpdated is a free log retrieval operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1. // -// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorMetadataURIUpdated(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorMetadataURIUpdatedIterator, error) { +// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover) +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, "OperatorMetadataURIUpdated", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerOperatorMetadataURIUpdatedIterator{contract: _ContractDelegationManager.contract, event: "OperatorMetadataURIUpdated", logs: logs, sub: sub}, nil + return &ContractDelegationManagerOperatorRegisteredIterator{contract: _ContractDelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchOperatorMetadataURIUpdated is a free log subscription operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1. // -// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorMetadataURIUpdated, operator []common.Address) (event.Subscription, error) { +// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover) +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, "OperatorMetadataURIUpdated", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -2539,8 +2519,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperat 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 { + event := new(ContractDelegationManagerOperatorRegistered) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -2561,21 +2541,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperat }), nil } -// ParseOperatorMetadataURIUpdated is a log parse operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// ParseOperatorRegistered is a log parse operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1. // -// 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 { +// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover) +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 } -// 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 +// ContractDelegationManagerOperatorSharesBurnedIterator is returned from FilterOperatorSharesBurned and is used to iterate over the raw logs and unpacked data for OperatorSharesBurned events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorSharesBurnedIterator struct { + Event *ContractDelegationManagerOperatorSharesBurned // 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 @@ -2589,7 +2569,7 @@ type ContractDelegationManagerOperatorRegisteredIterator 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 *ContractDelegationManagerOperatorRegisteredIterator) Next() bool { +func (it *ContractDelegationManagerOperatorSharesBurnedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2598,7 +2578,7 @@ func (it *ContractDelegationManagerOperatorRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorRegistered) + it.Event = new(ContractDelegationManagerOperatorSharesBurned) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2613,7 +2593,7 @@ func (it *ContractDelegationManagerOperatorRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorRegistered) + it.Event = new(ContractDelegationManagerOperatorSharesBurned) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2629,52 +2609,53 @@ func (it *ContractDelegationManagerOperatorRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerOperatorRegisteredIterator) Error() error { +func (it *ContractDelegationManagerOperatorSharesBurnedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerOperatorRegisteredIterator) Close() error { +func (it *ContractDelegationManagerOperatorSharesBurnedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerOperatorRegistered represents a OperatorRegistered event raised by the ContractDelegationManager contract. -type ContractDelegationManagerOperatorRegistered struct { - Operator common.Address - OperatorDetails IDelegationManagerTypesOperatorDetails - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerOperatorSharesBurned represents a OperatorSharesBurned event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorSharesBurned struct { + Operator common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// FilterOperatorSharesBurned is a free log retrieval operation binding the contract event 0xeff6aab2bc3f7c648896e1522eae71d6c22e3b0e218206b3f40af0e4d204716b. // -// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorRegisteredIterator, error) { +// Solidity: event OperatorSharesBurned(address indexed operator, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorSharesBurned(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorSharesBurnedIterator, error) { var operatorRule []interface{} for _, operatorItem := range operator { operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorSharesBurned", operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerOperatorRegisteredIterator{contract: _ContractDelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil + return &ContractDelegationManagerOperatorSharesBurnedIterator{contract: _ContractDelegationManager.contract, event: "OperatorSharesBurned", logs: logs, sub: sub}, nil } -// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// WatchOperatorSharesBurned is a free log subscription operation binding the contract event 0xeff6aab2bc3f7c648896e1522eae71d6c22e3b0e218206b3f40af0e4d204716b. // -// 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) { +// Solidity: event OperatorSharesBurned(address indexed operator, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorSharesBurned(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorSharesBurned, 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) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorSharesBurned", operatorRule) if err != nil { return nil, err } @@ -2684,8 +2665,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperat 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 { + event := new(ContractDelegationManagerOperatorSharesBurned) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorSharesBurned", log); err != nil { return err } event.Raw = log @@ -2706,12 +2687,12 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperat }), nil } -// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// ParseOperatorSharesBurned is a log parse operation binding the contract event 0xeff6aab2bc3f7c648896e1522eae71d6c22e3b0e218206b3f40af0e4d204716b. // -// 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 { +// Solidity: event OperatorSharesBurned(address indexed operator, address strategy, uint256 shares) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseOperatorSharesBurned(log types.Log) (*ContractDelegationManagerOperatorSharesBurned, error) { + event := new(ContractDelegationManagerOperatorSharesBurned) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorSharesBurned", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/bindings/EigenPod/binding.go b/contracts/bindings/EigenPod/binding.go index 4b205cf3..780c0b31 100644 --- a/contracts/bindings/EigenPod/binding.go +++ b/contracts/bindings/EigenPod/binding.go @@ -56,11 +56,11 @@ type BeaconChainProofsValidatorProof struct { // IEigenPodTypesCheckpoint is an auto generated low-level Go binding around an user-defined struct. type IEigenPodTypesCheckpoint struct { - BeaconBlockRoot [32]byte - ProofsRemaining *big.Int - PodBalanceGwei uint64 - BalanceDeltasGwei int64 - BeaconChainBalanceBeforeGwei uint64 + BeaconBlockRoot [32]byte + ProofsRemaining *big.Int + PodBalanceGwei uint64 + BalanceDeltasGwei int64 + PrevBeaconBalanceGwei uint64 } // IEigenPodTypesValidatorInfo is an auto generated low-level Go binding around an user-defined struct. @@ -73,8 +73,8 @@ type IEigenPodTypesValidatorInfo struct { // ContractEigenPodMetaData contains all meta data concerning the ContractEigenPod contract. var ContractEigenPodMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_GENESIS_TIME\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GENESIS_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"beaconChainBalanceBeforeGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountMustBeMultipleOfGwei\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]", - Bin: "0x60e060405234801561001057600080fd5b50604051613eba380380613eba83398101604081905261002f91610136565b6001600160a01b03808416608052821660a0526001600160401b03811660c05261005761005f565b50505061018f565b600054610100900460ff16156100cb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461011c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013357600080fd5b50565b60008060006060848603121561014b57600080fd5b83516101568161011e565b60208501519093506101678161011e565b60408501519092506001600160401b038116811461018457600080fd5b809150509250925092565b60805160a05160c051613caf61020b600039600061062d0152600081816102bd0152818161066801528181610712015281816109dd01528181610c1801528181610f0101528181610faa015281816111e8015281816115510152818161168801526128040152600081816104e601526110130152613caf6000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c146105bb578063ee94d67c146105db578063f074ba62146105fb578063f28824611461061b57600080fd5b8063c49074421461055b578063c4d66de81461057b578063d06d55871461059b57600080fd5b80636fcd0e53146104705780637439841f1461049d57806374cdd798146104d457806388676cad146105085780639b4e463414610528578063b522538a1461053b57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a59146103cd578063587533571461040357806358eaee79146104235780636c0d2d5a1461045057600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c436600461314b565b61064f565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f36600461320d565b610984565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b506103716040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101ff9190600060a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103d957600080fd5b5061024c6103e83660046132eb565b603b602052600090815260409020546001600160401b031681565b34801561040f57600080fd5b50603e546101eb906001600160a01b031681565b34801561042f57600080fd5b5061044361043e366004613347565b610c82565b6040516101ff91906133c0565b34801561045c57600080fd5b5061021e61046b3660046132eb565b610ce7565b34801561047c57600080fd5b5061049061048b3660046133ce565b610dfb565b6040516101ff91906133e7565b3480156104a957600080fd5b506104436104b83660046133ce565b600090815260366020526040902054600160c01b900460ff1690565b3480156104e057600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051457600080fd5b506101c9610523366004613449565b610ea8565b6101c9610536366004613466565b610f9f565b34801561054757600080fd5b50610490610556366004613347565b6110ea565b34801561056757600080fd5b506101c96105763660046134fd565b6111dd565b34801561058757600080fd5b506101c9610596366004613529565b611329565b3480156105a757600080fd5b506101c96105b6366004613529565b611479565b3480156105c757600080fd5b506101c96105d636600461361c565b61150d565b3480156105e757600080fd5b50603a5461024c906001600160401b031681565b34801561060757600080fd5b506101c96106163660046136f5565b61166f565b34801561062757600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190613761565b156106f95760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190613761565b156107a35760405163840a48d560e01b815260040160405180910390fd5b60006107e96107b2858061377e565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a7592505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561085857610858613388565b600281111561086957610869613388565b81525050905080604001516001600160401b0316876001600160401b0316116108a5576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108bd576108bd613388565b146108db5760405163d49e19a760e01b815260040160405180910390fd5b61091f6108e8868061377e565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a9992505050565b61093c5760405163161ce5ed60e31b815260040160405180910390fd5b61094e61094888610ce7565b87611ac3565b610971863561095d878061377e565b61096a60208a018a6137c7565b8651611b69565b61097b6000611c94565b50505050505050565b6033546001600160a01b03163314806109a75750603e546001600160a01b031633145b6109c45760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a509190613761565b15610a6e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a7c57508382145b610a99576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610acf576040516337e07ffd60e01b815260040160405180910390fd5b610ae1610adb8a610ce7565b89611ac3565b6000805b87811015610b7a57610b668a358a8a84818110610b0457610b0461380d565b9050602002016020810190610b199190613823565b898985818110610b2b57610b2b61380d565b9050602002810190610b3d91906137c7565b898987818110610b4f57610b4f61380d565b9050602002810190610b61919061377e565b611e17565b610b709083613860565b9150600101610ae5565b50603a54600160401b90046001600160401b031615610be857610ba1633b9aca0082613889565b603d8054601390610bc3908490600160981b90046001600160401b031661389d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b603354604051630257884360e21b81526001600160a01b03918216600482015260248101839052600060448201527f00000000000000000000000000000000000000000000000000000000000000009091169063095e210c90606401600060405180830381600087803b158015610c5e57600080fd5b505af1158015610c72573d6000803e3d6000fd5b5050505050505050505050505050565b600080610cc484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061228692505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610cf6611fff600c6138bc565b610d096001600160401b038416426138d3565b10610d2757604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d6f9161390a565b600060405180830381855afa9150503d8060008114610daa576040519150601f19603f3d011682016040523d82523d6000602084013e610daf565b606091505b5091509150818015610dc2575060008151115b610ddf5760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610df39190613926565b949350505050565b610e236040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e8e57610e8e613388565b6002811115610e9f57610e9f613388565b90525092915050565b6033546001600160a01b0316331480610ecb5750603e546001600160a01b031633145b610ee85760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f749190613761565b15610f925760405163840a48d560e01b815260040160405180910390fd5b610f9b82611c94565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fe857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec800000146110115760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec800000878761105461231b565b8888886040518863ffffffff1660e01b815260040161107896959493929190613994565b6000604051808303818588803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e2385856040516110db9291906139e3565b60405180910390a15050505050565b6111126040805160808101825260008082526020820181905291810182905290606082015290565b6036600061115585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061228692505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111c2576111c2613388565b60028111156111d3576111d3613388565b9052509392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461122657604051633213a66160e21b815260040160405180910390fd5b611234633b9aca00826139f7565b15611252576040516321ddeb1760e21b815260040160405180910390fd5b6000611262633b9aca0083613889565b6034549091506001600160401b039081169082161115611295576040516302c6f54760e21b815260040160405180910390fd5b603480548291906000906112b39084906001600160401b0316613a0b565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161131291815260200190565b60405180910390a26113248383612360565b505050565b600054610100900460ff16158080156113495750600054600160ff909116105b806113635750303b158015611363575060005460ff166001145b6113cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156113ee576000805461ff0019166101001790555b6001600160a01b038216611415576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f9b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114a45760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146115385760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156115a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c49190613761565b156115e25760405163840a48d560e01b815260040160405180910390fd5b8251845114611604576040516343714afd60e01b815260040160405180910390fd5b60005b845181101561166857611660838583815181106116265761162661380d565b60200260200101518784815181106116405761164061380d565b60200260200101516001600160a01b03166124799092919063ffffffff16565b600101611607565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156116d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fb9190613761565b156117195760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b0316600081900361174e57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b90049092166080820152906117ad90876124cb565b6000805b85811015611a1b57368787838181106117cc576117cc61380d565b90506020028101906117de9190613a2a565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561184f5761184f613388565b600281111561186057611860613388565b905250905060018160600151600281111561187d5761187d613388565b14611889575050611a13565b856001600160401b031681604001516001600160401b0316106118ad575050611a13565b600080806118be848a8f358861257d565b60208b01805193965091945092506118d582613a40565b62ffffff169052506080880180518491906118f190839061389d565b6001600160401b0316905250606088018051839190611911908390613a5f565b60070b905250611921818861389d565b85356000908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156119c6576119c6613388565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a350505050505b6001016117b1565b506001600160401b038084166000908152603b6020526040812080548493919291611a489185911661389d565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061097b826126a3565b600081600081518110611a8a57611a8a61380d565b60200260200101519050919050565b600081600381518110611aae57611aae61380d565b60200260200101516000801b14159050919050565b611acf600360206138bc565b611adc60208301836137c7565b905014611afc576040516313717da960e21b815260040160405180910390fd5b611b4c611b0c60208301836137c7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692505084359050600361293a565b610f9b576040516309bde33960e01b815260040160405180910390fd5b60088414611b8a5760405163200591bd60e01b815260040160405180910390fd5b6005611b9860286001613860565b611ba29190613860565b611bad9060206138bc565b8214611bcc576040516313717da960e21b815260040160405180910390fd5b6000611c0a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061295292505050565b9050600064ffffffffff8316611c2260286001613860565b600b901b179050611c6d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925086915085905061293a565b611c8a576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611cc45760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611cf2576040516367db5b8b60e01b815260040160405180910390fd5b6034546000906001600160401b0316611d0f633b9aca0047613889565b611d199190613a0b565b9050818015611d2f57506001600160401b038116155b15611d4d576040516332dea95960e21b815260040160405180910390fd5b60006040518060a00160405280611d6342610ce7565b815260395462ffffff1660208201526001600160401b038085166040830152600060608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611dc8816126a3565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080611e56848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a7592505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611ec557611ec5613388565b6002811115611ed657611ed6613388565b9052509050600081606001516002811115611ef357611ef3613388565b14611f11576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611f57868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612beb92505050565b6001600160401b031603611f7e57604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611fc4868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c1092505050565b6001600160401b031614611feb57604051632eade63760e01b815260040160405180910390fd5b611ff361231b565b611ffc90613a8e565b612038868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c2892505050565b1461205657604051633772dd5360e11b815260040160405180910390fd5b6000612094868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c3d92505050565b90506120a48a87878b8b8e611b69565b603980549060006120b483613ab2565b9091555050603a54600090600160401b90046001600160401b0316156120ec57603a54600160401b90046001600160401b03166120f9565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156121cf576121cf613388565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612277633b9aca006001600160401b0384166138bc565b9b9a5050505050505050505050565b600081516030146122aa57604051634f88323960e11b815260040160405180910390fd5b6040516002906122c1908490600090602001613acb565b60408051601f19818403018152908290526122db9161390a565b602060405180830381855afa1580156122f8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610ce19190613926565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123b05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016113c2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123fd576040519150601f19603f3d011682016040523d82523d6000602084013e612402565b606091505b50509050806113245760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016113c2565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611324908490612c55565b6124d760056003613860565b6124e29060206138bc565b6124ef60208301836137c7565b90501461250f576040516313717da960e21b815260040160405180910390fd5b606c61256061252160208401846137c7565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925050853590508461293a565b611324576040516309bde33960e01b815260040160405180910390fd5b8351602085015190600090819081612596878388612d2a565b9050846001600160401b0316816001600160401b031614612610576125bb8186612e0b565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b0152600003612697576039805490600061264183613afa565b9091555050600260608a015261265684613b11565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b806020015162ffffff166000036128a8576000633b9aca00826060015160070b83604001516001600160401b03166126db9190613b38565b600f0b6126e89190613b77565b9050600080821215612762576080830151603454600091633b9aca009161271891906001600160401b031661389d565b6001600160401b031661272b91906138bc565b905080670de0b6b3a764000061274085613ba7565b61274a90846138d3565b61275491906138bc565b61275e9190613889565b9150505b6040830151603480546000906127829084906001600160401b031661389d565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790556000603c55603d80546001600160d81b0319169055603354604051630257884360e21b81526001600160a01b0391821660048201526024810186905291841660448301527f000000000000000000000000000000000000000000000000000000000000000016915063095e210c90606401600060405180830381600087803b15801561284957600080fd5b505af115801561285d573d6000803e3d6000fd5b5050603a546040518581526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a2505050565b8051603c556020810151603d805460408401516060850151608086015162ffffff9095166affffffffffffffffffffff199093169290921763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9282169290920267ffffffffffffffff60981b191691909117600160981b91909316029190911790555b50565b600083612948868585612e1e565b1495945050505050565b600080600283516129639190613889565b90506000816001600160401b0381111561297f5761297f613546565b6040519080825280602002602001820160405280156129a8578160200160208202803683370190505b50905060005b82811015612aa5576002856129c383836138bc565b815181106129d3576129d361380d565b6020026020010151868360026129e991906138bc565b6129f4906001613860565b81518110612a0457612a0461380d565b6020026020010151604051602001612a26929190918252602082015260400190565b60408051601f1981840301815290829052612a409161390a565b602060405180830381855afa158015612a5d573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612a809190613926565b828281518110612a9257612a9261380d565b60209081029190910101526001016129ae565b50612ab1600283613889565b91505b8115612bc75760005b82811015612bb457600282612ad283836138bc565b81518110612ae257612ae261380d565b602002602001015183836002612af891906138bc565b612b03906001613860565b81518110612b1357612b1361380d565b6020026020010151604051602001612b35929190918252602082015260400190565b60408051601f1981840301815290829052612b4f9161390a565b602060405180830381855afa158015612b6c573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b8f9190613926565b828281518110612ba157612ba161380d565b6020908102919091010152600101612abd565b50612bc0600283613889565b9150612ab4565b80600081518110612bda57612bda61380d565b602002602001015192505050919050565b6000610ce182600581518110612c0357612c0361380d565b6020026020010151612efb565b6000610ce182600681518110612c0357612c0361380d565b600081600181518110611a8a57611a8a61380d565b6000610ce182600281518110612c0357612c0361380d565b6000612caa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f629092919063ffffffff16565b9050805160001480612ccb575080806020019051810190612ccb9190613761565b6113245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016113c2565b6000612d3860266001613860565b612d439060206138bc565b612d5060408401846137c7565b905014612d70576040516313717da960e21b815260040160405180910390fd5b6000612d7d600485613bc3565b64ffffffffff169050612dd7612d9660408501856137c7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250505060208601358461293a565b612df4576040516309bde33960e01b815260040160405180910390fd5b612e02836020013585612f71565b95945050505050565b6000612e178284613bed565b9392505050565b60008351600014158015612e3d575060208451612e3b91906139f7565b155b612e5a576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612ef157612e7e6002856139f7565b600003612eb4578151600052808601516020526020826040600060026107d05a03fa612ea957600080fd5b600284049350612edf565b8086015160005281516020526020826040600060026107d05a03fa612ed857600080fd5b6002840493505b612eea602082613860565b9050612e6b565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610df38484600085612f9e565b600080612f7f600484613c1c565b612f8a906040613c46565b64ffffffffff169050610df384821b612efb565b606082471015612fff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016113c2565b600080866001600160a01b0316858760405161301b919061390a565b60006040518083038185875af1925050503d8060008114613058576040519150601f19603f3d011682016040523d82523d6000602084013e61305d565b606091505b509150915061306e87838387613079565b979650505050505050565b606083156130e85782516000036130e1576001600160a01b0385163b6130e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016113c2565b5081610df3565b610df383838151156130fd5781518083602001fd5b8060405162461bcd60e51b81526004016113c29190613c66565b80356001600160401b038116811461312e57600080fd5b919050565b60006040828403121561314557600080fd5b50919050565b60008060006060848603121561316057600080fd5b61316984613117565b925060208401356001600160401b0381111561318457600080fd5b61319086828701613133565b92505060408401356001600160401b038111156131ac57600080fd5b6131b886828701613133565b9150509250925092565b60008083601f8401126131d457600080fd5b5081356001600160401b038111156131eb57600080fd5b6020830191508360208260051b850101111561320657600080fd5b9250929050565b60008060008060008060008060a0898b03121561322957600080fd5b61323289613117565b975060208901356001600160401b0381111561324d57600080fd5b6132598b828c01613133565b97505060408901356001600160401b0381111561327557600080fd5b6132818b828c016131c2565b90975095505060608901356001600160401b038111156132a057600080fd5b6132ac8b828c016131c2565b90955093505060808901356001600160401b038111156132cb57600080fd5b6132d78b828c016131c2565b999c989b5096995094979396929594505050565b6000602082840312156132fd57600080fd5b612e1782613117565b60008083601f84011261331857600080fd5b5081356001600160401b0381111561332f57600080fd5b60208301915083602082850101111561320657600080fd5b6000806020838503121561335a57600080fd5b82356001600160401b0381111561337057600080fd5b61337c85828601613306565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b600381106133bc57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610ce1828461339e565b6000602082840312156133e057600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151613434606084018261339e565b5092915050565b801515811461293757600080fd5b60006020828403121561345b57600080fd5b8135612e178161343b565b60008060008060006060868803121561347e57600080fd5b85356001600160401b0381111561349457600080fd5b6134a088828901613306565b90965094505060208601356001600160401b038111156134bf57600080fd5b6134cb88828901613306565b96999598509660400135949350505050565b6001600160a01b038116811461293757600080fd5b803561312e816134dd565b6000806040838503121561351057600080fd5b823561351b816134dd565b946020939093013593505050565b60006020828403121561353b57600080fd5b8135612e17816134dd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561358457613584613546565b604052919050565b60006001600160401b038211156135a5576135a5613546565b5060051b60200190565b600082601f8301126135c057600080fd5b81356135d36135ce8261358c565b61355c565b8082825260208201915060208360051b8601019250858311156135f557600080fd5b602085015b838110156136125780358352602092830192016135fa565b5095945050505050565b60008060006060848603121561363157600080fd5b83356001600160401b0381111561364757600080fd5b8401601f8101861361365857600080fd5b80356136666135ce8261358c565b8082825260208201915060208360051b85010192508883111561368857600080fd5b6020840193505b828410156136b35783356136a2816134dd565b82526020938401939091019061368f565b955050505060208401356001600160401b038111156136d157600080fd5b6136dd868287016135af565b9250506136ec604085016134f2565b90509250925092565b60008060006040848603121561370a57600080fd5b83356001600160401b0381111561372057600080fd5b61372c86828701613133565b93505060208401356001600160401b0381111561374857600080fd5b613754868287016131c2565b9497909650939450505050565b60006020828403121561377357600080fd5b8151612e178161343b565b6000808335601e1984360301811261379557600080fd5b8301803591506001600160401b038211156137af57600080fd5b6020019150600581901b360382131561320657600080fd5b6000808335601e198436030181126137de57600080fd5b8301803591506001600160401b038211156137f857600080fd5b60200191503681900382131561320657600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561383557600080fd5b813564ffffffffff81168114612e1757600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610ce157610ce161384a565b634e487b7160e01b600052601260045260246000fd5b60008261389857613898613873565b500490565b6001600160401b038181168382160190811115610ce157610ce161384a565b8082028115828204841417610ce157610ce161384a565b81810381811115610ce157610ce161384a565b60005b838110156139015781810151838201526020016138e9565b50506000910152565b6000825161391c8184602087016138e6565b9190910192915050565b60006020828403121561393857600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526139808160208601602086016138e6565b601f01601f19169290920160200192915050565b6080815260006139a860808301888a61393f565b82810360208401526139ba8188613968565b905082810360408401526139cf81868861393f565b915050826060830152979650505050505050565b602081526000610df360208301848661393f565b600082613a0657613a06613873565b500690565b6001600160401b038281168282160390811115610ce157610ce161384a565b60008235605e1983360301811261391c57600080fd5b600062ffffff821680613a5557613a5561384a565b6000190192915050565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610ce157610ce161384a565b805160208083015191908110156131455760001960209190910360031b1b16919050565b600060018201613ac457613ac461384a565b5060010190565b60008351613add8184602088016138e6565b6001600160801b0319939093169190920190815260100192915050565b600081613b0957613b0961384a565b506000190190565b60008160070b677fffffffffffffff198103613b2f57613b2f61384a565b60000392915050565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610ce157610ce161384a565b80820260008212600160ff1b84141615613b9357613b9361384a565b8181058314821517610ce157610ce161384a565b6000600160ff1b8201613bbc57613bbc61384a565b5060000390565b600064ffffffffff831680613bda57613bda613873565b8064ffffffffff84160491505092915050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610ce157610ce161384a565b600064ffffffffff831680613c3357613c33613873565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146134345761343461384a565b602081526000612e17602083018461396856fea2646970667358221220adffd99264422134e073e689e0e810ec7803601f1a267e4bfcc0c62df6cbd20264736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_GENESIS_TIME\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GENESIS_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountMustBeMultipleOfGwei\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]", + Bin: "0x60e060405234801561001057600080fd5b50604051613dd7380380613dd783398101604081905261002f91610136565b6001600160a01b03808416608052821660a0526001600160401b03811660c05261005761005f565b50505061018f565b600054610100900460ff16156100cb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461011c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013357600080fd5b50565b60008060006060848603121561014b57600080fd5b83516101568161011e565b60208501519093506101678161011e565b60408501519092506001600160401b038116811461018457600080fd5b809150509250925092565b60805160a05160c051613bcc61020b60003960006106270152600081816102b7015281816106620152818161070c015281816109d701528181610ba501528181610e8e01528181610f3701528181611175015281816114de0152818161161501526128560152600081816104e00152610fa00152613bcc6000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c146105b5578063ee94d67c146105d5578063f074ba62146105f5578063f28824611461061557600080fd5b8063c490744214610555578063c4d66de814610575578063d06d55871461059557600080fd5b80636fcd0e531461046a5780637439841f1461049757806374cdd798146104ce57806388676cad146105025780639b4e463414610522578063b522538a1461053557600080fd5b80634665bcda116101235780634665bcda146102a557806347d28372146102d957806352396a59146103c757806358753357146103fd57806358eaee791461041d5780636c0d2d5a1461044a57600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461025e57806342ecff2a1461027e57600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c43660046130b9565b610649565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b506034546001600160401b03165b6040516001600160401b0390911681526020016101ff565b34801561026a57600080fd5b506101c961027936600461317b565b61097e565b34801561028a57600080fd5b50603a5461024690600160401b90046001600160401b031681565b3480156102b157600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e557600080fd5b5061036b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101ff9190600060a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103d357600080fd5b506102466103e2366004613259565b603b602052600090815260409020546001600160401b031681565b34801561040957600080fd5b50603e546101eb906001600160a01b031681565b34801561042957600080fd5b5061043d6104383660046132bc565b610c0f565b6040516101ff9190613335565b34801561045657600080fd5b5061021e610465366004613259565b610c74565b34801561047657600080fd5b5061048a610485366004613343565b610d88565b6040516101ff919061335c565b3480156104a357600080fd5b5061043d6104b2366004613343565b600090815260366020526040902054600160c01b900460ff1690565b3480156104da57600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050e57600080fd5b506101c961051d3660046133c1565b610e35565b6101c96105303660046133de565b610f2c565b34801561054157600080fd5b5061048a6105503660046132bc565b611077565b34801561056157600080fd5b506101c9610570366004613475565b61116a565b34801561058157600080fd5b506101c96105903660046134a1565b6112b6565b3480156105a157600080fd5b506101c96105b03660046134a1565b611406565b3480156105c157600080fd5b506101c96105d0366004613594565b61149a565b3480156105e157600080fd5b50603a54610246906001600160401b031681565b34801561060157600080fd5b506101c961061036600461366d565b6115fc565b34801561062157600080fd5b506102467f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906136d9565b156106f35760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f91906136d9565b1561079d5760405163840a48d560e01b815260040160405180910390fd5b60006107e36107ac85806136f6565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a0292505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610852576108526132fd565b6002811115610863576108636132fd565b81525050905080604001516001600160401b0316876001600160401b03161161089f576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108b7576108b76132fd565b146108d55760405163d49e19a760e01b815260040160405180910390fd5b6109196108e286806136f6565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a2692505050565b6109365760405163161ce5ed60e31b815260040160405180910390fd5b61094861094288610c74565b87611a50565b61096b863561095787806136f6565b61096460208a018a61373f565b8651611af6565b6109756000611c21565b50505050505050565b6033546001600160a01b03163314806109a15750603e546001600160a01b031633145b6109be5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906136d9565b15610a685760405163840a48d560e01b815260040160405180910390fd5b8584148015610a7657508382145b610a93576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ac9576040516337e07ffd60e01b815260040160405180910390fd5b610adb610ad58a610c74565b89611a50565b6000805b87811015610b7457610b608a358a8a84818110610afe57610afe613785565b9050602002016020810190610b13919061379b565b898985818110610b2557610b25613785565b9050602002810190610b37919061373f565b898987818110610b4957610b49613785565b9050602002810190610b5b91906136f6565b611da4565b610b6a90836137d8565b9150600101610adf565b5060335460405163a1ca780b60e01b81526001600160a01b03918216600482015260006024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b90606401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b5050505050505050505050505050565b600080610c5184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061226592505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610c83611fff600c6137eb565b610c966001600160401b03841642613802565b10610cb457604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610cfc91613839565b600060405180830381855afa9150503d8060008114610d37576040519150601f19603f3d011682016040523d82523d6000602084013e610d3c565b606091505b5091509150818015610d4f575060008151115b610d6c5760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610d809190613855565b949350505050565b610db06040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e1b57610e1b6132fd565b6002811115610e2c57610e2c6132fd565b90525092915050565b6033546001600160a01b0316331480610e585750603e546001600160a01b031633145b610e755760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0191906136d9565b15610f1f5760405163840a48d560e01b815260040160405180910390fd5b610f2882611c21565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f7557604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610f9e5760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610fe16122fa565b8888886040518863ffffffff1660e01b8152600401611005969594939291906138c3565b6000604051808303818588803b15801561101e57600080fd5b505af1158015611032573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611068929190613912565b60405180910390a15050505050565b61109f6040805160808101825260008082526020820181905291810182905290606082015290565b603660006110e285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061226592505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561114f5761114f6132fd565b6002811115611160576111606132fd565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111b357604051633213a66160e21b815260040160405180910390fd5b6111c1633b9aca008261393c565b156111df576040516321ddeb1760e21b815260040160405180910390fd5b60006111ef633b9aca0083613950565b6034549091506001600160401b039081169082161115611222576040516302c6f54760e21b815260040160405180910390fd5b603480548291906000906112409084906001600160401b0316613964565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161129f91815260200190565b60405180910390a26112b1838361233f565b505050565b600054610100900460ff16158080156112d65750600054600160ff909116105b806112f05750303b1580156112f0575060005460ff166001145b6113585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561137b576000805461ff0019166101001790555b6001600160a01b0382166113a2576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f28576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114315760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114c55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561152d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155191906136d9565b1561156f5760405163840a48d560e01b815260040160405180910390fd5b8251845114611591576040516343714afd60e01b815260040160405180910390fd5b60005b84518110156115f5576115ed838583815181106115b3576115b3613785565b60200260200101518784815181106115cd576115cd613785565b60200260200101516001600160a01b03166124589092919063ffffffff16565b600101611594565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611664573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168891906136d9565b156116a65760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b031660008190036116db57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b900490921660808201529061173a90876124aa565b6000805b858110156119a8573687878381811061175957611759613785565b905060200281019061176b9190613983565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117dc576117dc6132fd565b60028111156117ed576117ed6132fd565b905250905060018160600151600281111561180a5761180a6132fd565b146118165750506119a0565b856001600160401b031681604001516001600160401b03161061183a5750506119a0565b6000808061184b848a8f358861255c565b60208b018051939650919450925061186282613999565b62ffffff1690525060808801805184919061187e9083906139b8565b6001600160401b031690525060608801805183919061189e9083906139d7565b60070b9052506118ae81886139b8565b85356000908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611953576119536132fd565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a350505050505b60010161173e565b506001600160401b038084166000908152603b60205260408120805484939192916119d5918591166139b8565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061097582612682565b600081600081518110611a1757611a17613785565b60200260200101519050919050565b600081600381518110611a3b57611a3b613785565b60200260200101516000801b14159050919050565b611a5c600360206137eb565b611a69602083018361373f565b905014611a89576040516313717da960e21b815260040160405180910390fd5b611ad9611a99602083018361373f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250508435905060036128bb565b610f28576040516309bde33960e01b815260040160405180910390fd5b60088414611b175760405163200591bd60e01b815260040160405180910390fd5b6005611b25602860016137d8565b611b2f91906137d8565b611b3a9060206137eb565b8214611b59576040516313717da960e21b815260040160405180910390fd5b6000611b978686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506128d392505050565b9050600064ffffffffff8316611baf602860016137d8565b600b901b179050611bfa85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508691508590506128bb565b611c17576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611c515760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c7f576040516367db5b8b60e01b815260040160405180910390fd5b6034546000906001600160401b0316611c9c633b9aca0047613950565b611ca69190613964565b9050818015611cbc57506001600160401b038116155b15611cda576040516332dea95960e21b815260040160405180910390fd5b60006040518060a00160405280611cf042610c74565b815260395462ffffff1660208201526001600160401b038085166040830152600060608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611d5581612682565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080611de3848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a0292505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611e5257611e526132fd565b6002811115611e6357611e636132fd565b9052509050600081606001516002811115611e8057611e806132fd565b14611e9e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611ee4868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612b6c92505050565b6001600160401b031603611f0b57604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611f51868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612b9192505050565b6001600160401b031614611f7857604051632eade63760e01b815260040160405180910390fd5b611f806122fa565b611f8990613a06565b611fc5868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612ba992505050565b14611fe357604051633772dd5360e11b815260040160405180910390fd5b6000612021868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612bbe92505050565b90506120318a87878b8b8e611af6565b6039805490600061204183613a2a565b9091555050603a54600090600160401b90046001600160401b03161561207957603a54600160401b90046001600160401b0316612086565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561215c5761215c6132fd565b021790555050603d8054849250601390612187908490600160981b90046001600160401b03166139b8565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516121e7919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612256633b9aca006001600160401b0384166137eb565b9b9a5050505050505050505050565b6000815160301461228957604051634f88323960e11b815260040160405180910390fd5b6040516002906122a0908490600090602001613a43565b60408051601f19818403018152908290526122ba91613839565b602060405180830381855afa1580156122d7573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6e9190613855565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b8047101561238f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161134f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123dc576040519150601f19603f3d011682016040523d82523d6000602084013e6123e1565b606091505b50509050806112b15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161134f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112b1908490612bd6565b6124b6600560036137d8565b6124c19060206137eb565b6124ce602083018361373f565b9050146124ee576040516313717da960e21b815260040160405180910390fd5b606c61253f612500602084018461373f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792505085359050846128bb565b6112b1576040516309bde33960e01b815260040160405180910390fd5b8351602085015190600090819081612575878388612cab565b9050846001600160401b0316816001600160401b0316146125ef5761259a8582613a72565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b0152600003612676576039805490600061262083613aa1565b9091555050600260608a015261263584613ab8565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612722578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b608081015160345460009161273f916001600160401b03166139b8565b905060008260600151836040015161275791906139d7565b604084015160348054929350909160009061277c9084906001600160401b03166139b8565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b0319909116179055600091506127cd90633b9aca009085166137eb565b905060006127e3633b9aca00600785900b613adf565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b90606401600060405180830381600087803b15801561289c57600080fd5b505af11580156128b0573d6000803e3d6000fd5b505050505050505050565b6000836128c9868585612d8c565b1495945050505050565b600080600283516128e49190613950565b90506000816001600160401b03811115612900576129006134be565b604051908082528060200260200182016040528015612929578160200160208202803683370190505b50905060005b82811015612a265760028561294483836137eb565b8151811061295457612954613785565b60200260200101518683600261296a91906137eb565b6129759060016137d8565b8151811061298557612985613785565b60200260200101516040516020016129a7929190918252602082015260400190565b60408051601f19818403018152908290526129c191613839565b602060405180830381855afa1580156129de573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612a019190613855565b828281518110612a1357612a13613785565b602090810291909101015260010161292f565b50612a32600283613950565b91505b8115612b485760005b82811015612b3557600282612a5383836137eb565b81518110612a6357612a63613785565b602002602001015183836002612a7991906137eb565b612a849060016137d8565b81518110612a9457612a94613785565b6020026020010151604051602001612ab6929190918252602082015260400190565b60408051601f1981840301815290829052612ad091613839565b602060405180830381855afa158015612aed573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b109190613855565b828281518110612b2257612b22613785565b6020908102919091010152600101612a3e565b50612b41600283613950565b9150612a35565b80600081518110612b5b57612b5b613785565b602002602001015192505050919050565b6000610c6e82600581518110612b8457612b84613785565b6020026020010151612e69565b6000610c6e82600681518110612b8457612b84613785565b600081600181518110611a1757611a17613785565b6000610c6e82600281518110612b8457612b84613785565b6000612c2b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ed09092919063ffffffff16565b9050805160001480612c4c575080806020019051810190612c4c91906136d9565b6112b15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161134f565b6000612cb9602660016137d8565b612cc49060206137eb565b612cd1604084018461373f565b905014612cf1576040516313717da960e21b815260040160405180910390fd5b6000612cfe600485613b0f565b64ffffffffff169050612d58612d17604085018561373f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089925050506020860135846128bb565b612d75576040516309bde33960e01b815260040160405180910390fd5b612d83836020013585612edf565b95945050505050565b60008351600014158015612dab575060208451612da9919061393c565b155b612dc8576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612e5f57612dec60028561393c565b600003612e22578151600052808601516020526020826040600060026107d05a03fa612e1757600080fd5b600284049350612e4d565b8086015160005281516020526020826040600060026107d05a03fa612e4657600080fd5b6002840493505b612e586020826137d8565b9050612dd9565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610d808484600085612f0c565b600080612eed600484613b39565b612ef8906040613b63565b64ffffffffff169050610d8084821b612e69565b606082471015612f6d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161134f565b600080866001600160a01b03168587604051612f899190613839565b60006040518083038185875af1925050503d8060008114612fc6576040519150601f19603f3d011682016040523d82523d6000602084013e612fcb565b606091505b5091509150612fdc87838387612fe7565b979650505050505050565b6060831561305657825160000361304f576001600160a01b0385163b61304f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161134f565b5081610d80565b610d80838381511561306b5781518083602001fd5b8060405162461bcd60e51b815260040161134f9190613b83565b80356001600160401b038116811461309c57600080fd5b919050565b6000604082840312156130b357600080fd5b50919050565b6000806000606084860312156130ce57600080fd5b6130d784613085565b925060208401356001600160401b038111156130f257600080fd5b6130fe868287016130a1565b92505060408401356001600160401b0381111561311a57600080fd5b613126868287016130a1565b9150509250925092565b60008083601f84011261314257600080fd5b5081356001600160401b0381111561315957600080fd5b6020830191508360208260051b850101111561317457600080fd5b9250929050565b60008060008060008060008060a0898b03121561319757600080fd5b6131a089613085565b975060208901356001600160401b038111156131bb57600080fd5b6131c78b828c016130a1565b97505060408901356001600160401b038111156131e357600080fd5b6131ef8b828c01613130565b90975095505060608901356001600160401b0381111561320e57600080fd5b61321a8b828c01613130565b90955093505060808901356001600160401b0381111561323957600080fd5b6132458b828c01613130565b999c989b5096995094979396929594505050565b60006020828403121561326b57600080fd5b61327482613085565b9392505050565b60008083601f84011261328d57600080fd5b5081356001600160401b038111156132a457600080fd5b60208301915083602082850101111561317457600080fd5b600080602083850312156132cf57600080fd5b82356001600160401b038111156132e557600080fd5b6132f18582860161327b565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b6003811061333157634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c6e8284613313565b60006020828403121561335557600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516133a96060840182613313565b5092915050565b80151581146133be57600080fd5b50565b6000602082840312156133d357600080fd5b8135613274816133b0565b6000806000806000606086880312156133f657600080fd5b85356001600160401b0381111561340c57600080fd5b6134188882890161327b565b90965094505060208601356001600160401b0381111561343757600080fd5b6134438882890161327b565b96999598509660400135949350505050565b6001600160a01b03811681146133be57600080fd5b803561309c81613455565b6000806040838503121561348857600080fd5b823561349381613455565b946020939093013593505050565b6000602082840312156134b357600080fd5b813561327481613455565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156134fc576134fc6134be565b604052919050565b60006001600160401b0382111561351d5761351d6134be565b5060051b60200190565b600082601f83011261353857600080fd5b813561354b61354682613504565b6134d4565b8082825260208201915060208360051b86010192508583111561356d57600080fd5b602085015b8381101561358a578035835260209283019201613572565b5095945050505050565b6000806000606084860312156135a957600080fd5b83356001600160401b038111156135bf57600080fd5b8401601f810186136135d057600080fd5b80356135de61354682613504565b8082825260208201915060208360051b85010192508883111561360057600080fd5b6020840193505b8284101561362b57833561361a81613455565b825260209384019390910190613607565b955050505060208401356001600160401b0381111561364957600080fd5b61365586828701613527565b9250506136646040850161346a565b90509250925092565b60008060006040848603121561368257600080fd5b83356001600160401b0381111561369857600080fd5b6136a4868287016130a1565b93505060208401356001600160401b038111156136c057600080fd5b6136cc86828701613130565b9497909650939450505050565b6000602082840312156136eb57600080fd5b8151613274816133b0565b6000808335601e1984360301811261370d57600080fd5b8301803591506001600160401b0382111561372757600080fd5b6020019150600581901b360382131561317457600080fd5b6000808335601e1984360301811261375657600080fd5b8301803591506001600160401b0382111561377057600080fd5b60200191503681900382131561317457600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137ad57600080fd5b813564ffffffffff8116811461327457600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6e57610c6e6137c2565b8082028115828204841417610c6e57610c6e6137c2565b81810381811115610c6e57610c6e6137c2565b60005b83811015613830578181015183820152602001613818565b50506000910152565b6000825161384b818460208701613815565b9190910192915050565b60006020828403121561386757600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526138af816020860160208601613815565b601f01601f19169290920160200192915050565b6080815260006138d760808301888a61386e565b82810360208401526138e98188613897565b905082810360408401526138fe81868861386e565b915050826060830152979650505050505050565b602081526000610d8060208301848661386e565b634e487b7160e01b600052601260045260246000fd5b60008261394b5761394b613926565b500690565b60008261395f5761395f613926565b500490565b6001600160401b038281168282160390811115610c6e57610c6e6137c2565b60008235605e1983360301811261384b57600080fd5b600062ffffff8216806139ae576139ae6137c2565b6000190192915050565b6001600160401b038181168382160190811115610c6e57610c6e6137c2565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610c6e57610c6e6137c2565b805160208083015191908110156130b35760001960209190910360031b1b16919050565b600060018201613a3c57613a3c6137c2565b5060010190565b60008351613a55818460208801613815565b6001600160801b0319939093169190920190815260100192915050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610c6e57610c6e6137c2565b600081613ab057613ab06137c2565b506000190190565b60008160070b677fffffffffffffff198103613ad657613ad66137c2565b60000392915050565b80820260008212600160ff1b84141615613afb57613afb6137c2565b8181058314821517610c6e57610c6e6137c2565b600064ffffffffff831680613b2657613b26613926565b8064ffffffffff84160491505092915050565b600064ffffffffff831680613b5057613b50613926565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146133a9576133a96137c2565b602081526000613274602083018461389756fea264697066735822122024cd0631a430d031ea8aa4336a9d687d60f70c6a008df3d610297e035538b31264736f6c634300081b0033", } // ContractEigenPodABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/EigenPodManager/binding.go b/contracts/bindings/EigenPodManager/binding.go index 9060a80f..fbba9a68 100644 --- a/contracts/bindings/EigenPodManager/binding.go +++ b/contracts/bindings/EigenPodManager/binding.go @@ -31,8 +31,8 @@ var ( // ContractEigenPodManagerMetaData contains all meta data concerning the ContractEigenPodManager contract. var ContractEigenPodManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"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\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"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\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"proportionOfOldBalance\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]", - Bin: "0x61012060405234801561001157600080fd5b5060405161283a38038061283a83398101604081905261003091610169565b84848484846001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e0521661010052610088610092565b50505050506101de565b600054610100900460ff16156100fe5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461014f576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461016657600080fd5b50565b600080600080600060a0868803121561018157600080fd5b855161018c81610151565b602087015190955061019d81610151565b60408701519094506101ae81610151565b60608701519093506101bf81610151565b60808701519092506101d081610151565b809150509295509295909350565b60805160a05160c05160e051610100516125d261026860003960008181610507015281816106f6015281816107cd0152818161091e01528181610c340152610f6a015260006102660152600081816101f501528181610ee401526116020152600061034301526000818161038c0152818161085101528181610b7a015261119901526125d26000f3fe60806040526004361061019c5760003560e01c80638da5cb5b116100ec578063cd6dc6871161008a578063f2fde38b11610064578063f2fde38b14610529578063f6848d2414610549578063fabc1cbc14610584578063fe243a17146105a457600080fd5b8063cd6dc687146104a8578063d48e8894146104c8578063ea4d3c9b146104f557600080fd5b80639ba06275116100c65780639ba0627514610407578063a38406a31461043d578063a6a509be1461045d578063c4623ea11461047357600080fd5b80638da5cb5b146103ae5780639104c319146103cc5780639b4e4634146103f457600080fd5b80635ac86ab711610159578063724af42311610133578063724af4231461031157806374cdd7981461033157806384d8106214610365578063886f11951461037a57600080fd5b80635ac86ab71461029d5780635c975abb146102dd578063715018a6146102fc57600080fd5b8063095e210c146101a1578063136439dd146101c3578063292b7b2b146101e35780632eae418c1461023457806339b70e3814610254578063595c6a6714610288575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004611876565b6105c4565b005b3480156101cf57600080fd5b506101c16101de3660046118c5565b61083c565b3480156101ef57600080fd5b506102177f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024057600080fd5b506101c161024f3660046118de565b610913565b34801561026057600080fd5b506102177f000000000000000000000000000000000000000000000000000000000000000081565b34801561029457600080fd5b506101c1610b65565b3480156102a957600080fd5b506102cd6102b836600461192f565b606654600160ff9092169190911b9081161490565b604051901515815260200161022b565b3480156102e957600080fd5b506066545b60405190815260200161022b565b34801561030857600080fd5b506101c1610c17565b34801561031d57600080fd5b506101c161032c366004611952565b610c29565b34801561033d57600080fd5b506102177f000000000000000000000000000000000000000000000000000000000000000081565b34801561037157600080fd5b50610217610d52565b34801561038657600080fd5b506102177f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ba57600080fd5b506033546001600160a01b0316610217565b3480156103d857600080fd5b5061021773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101c16104023660046119d5565b610dc5565b34801561041357600080fd5b50610217610422366004611a4e565b6098602052600090815260409020546001600160a01b031681565b34801561044957600080fd5b50610217610458366004611a4e565b610e88565b34801561046957600080fd5b506102ee60995481565b34801561047f57600080fd5b5061049361048e3660046118de565b610f5c565b6040805192835260208301919091520161022b565b3480156104b457600080fd5b506101c16104c3366004611a6b565b610ffc565b3480156104d457600080fd5b506102ee6104e3366004611a4e565b609b6020526000908152604090205481565b34801561050157600080fd5b506102177f000000000000000000000000000000000000000000000000000000000000000081565b34801561053557600080fd5b506101c1610544366004611a4e565b61111e565b34801561055557600080fd5b506102cd610564366004611a4e565b6001600160a01b0390811660009081526098602052604090205416151590565b34801561059057600080fd5b506101c161059f3660046118c5565b611197565b3480156105b057600080fd5b506102ee6105bf366004611a97565b6112af565b6001600160a01b038084166000908152609860205260409020548491163314610600576040516312e16d7160e11b815260040160405180910390fd5b610608611333565b6001600160a01b03841661062f576040516339b190bb60e11b815260040160405180910390fd5b61063d633b9aca0084611ad0565b1561065b576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384166000908152609b6020526040812054121561069357604051634b692bcf60e01b815260040160405180910390fd5b600083131561075b576000806106a9868661138c565b604051631e328e7960e11b81526001600160a01b03898116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf290608401600060405180830381600087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b50505050505061082c565b60008312801561078157506001600160a01b0384166000908152609b6020526040812054135b1561082c576001600160a01b038481166000818152609b602052604090819020549051635d9aed2360e01b81526004810192909252602482015267ffffffffffffffff841660448201527f000000000000000000000000000000000000000000000000000000000000000090911690635d9aed2390606401600060405180830381600087803b15801561081357600080fd5b505af1158015610827573d6000803e3d6000fd5b505050505b610836600160c955565b50505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c49190611af2565b6108e157604051631d77d47760e21b815260040160405180910390fd5b60665481811681146109065760405163c61dca5d60e01b815260040160405180910390fd5b61090f826114d1565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461095c5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461099957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166109c0576040516339b190bb60e11b815260040160405180910390fd5b600081136109e15760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000908152609b60205260408120549080821215610ae0576000610a0e83611b2a565b9050600081851115610a2d575080610a268186611b46565b9250610a34565b5060009150835b6000610a408286611b59565b6001600160a01b038a166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c619390610a919085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709882604051610ad491815260200190565b60405180910390a25050505b8015610b5d576001600160a01b03868116600081815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c490744290604401600060405180830381600087803b158015610b4457600080fd5b505af1158015610b58573d6000803e3d6000fd5b505050505b505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611af2565b610c0a57604051631d77d47760e21b815260040160405180910390fd5b610c156000196114d1565b565b610c1f61150e565b610c156000611568565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c725760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610caf57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b6020526040812054610cd3908390611b81565b90506000811215610cf75760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610d449084815260200190565b60405180910390a250505050565b6066546000908190600190811603610d7d5760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031615610db45760405163031a852160e21b815260040160405180910390fd5b6000610dbe6115ba565b9250505090565b606654600090600190811603610dee5760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031680610e1757610e146115ba565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610e4d908b908b908b908b908b90600401611bd1565b6000604051808303818588803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b0380821660009081526098602052604081205490911680610f5657610f53836001600160a01b031660001b60405180610940016040528061090e8152602001611c8f61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052610f389291602001611c3b565b6040516020818303038152906040528051906020012061171f565b90505b92915050565b600080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa85760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03851673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610fe557604051632711b74d60e11b815260040160405180910390fd5b610fef868461138c565b9150915094509492505050565b600054610100900460ff161580801561101c5750600054600160ff909116105b806110365750303b158015611036575060005460ff166001145b61109e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156110c1576000805461ff0019166101001790555b6110ca83611568565b6110d3826114d1565b8015611119576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61112661150e565b6001600160a01b03811661118b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611095565b61119481611568565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190611c58565b6001600160a01b0316336001600160a01b03161461124a5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146112715760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146112ee57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b60205260408120541261132a576001600160a01b0383166000908152609b6020526040902054610f53565b50600092915050565b600260c954036113855760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611095565b600260c955565b6000806001600160a01b0384166113b6576040516339b190bb60e11b815260040160405180910390fd5b60008312156113d85760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000908152609b602052604081205484916113fd8383611b59565b6001600160a01b0388166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061144e9086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161149191815260200190565b60405180910390a2600081136114b057600080945094505050506114ca565b600082126114be57816114c1565b60005b86945094505050505b9250929050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b03163314610c155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611095565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006099600081546115cb90611c75565b9091555060408051610940810190915261090e80825260009161166a9183913391611c8f6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526116569291602001611c3b565b60405160208183030381529060405261172c565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b6000610f53838330611837565b60008347101561177e5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611095565b81516000036117cf5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611095565b8282516020840186f590506001600160a01b0381166118305760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611095565b9392505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b038116811461119457600080fd5b60008060006060848603121561188b57600080fd5b833561189681611861565b925060208401359150604084013567ffffffffffffffff811681146118ba57600080fd5b809150509250925092565b6000602082840312156118d757600080fd5b5035919050565b600080600080608085870312156118f457600080fd5b84356118ff81611861565b9350602085013561190f81611861565b9250604085013561191f81611861565b9396929550929360600135925050565b60006020828403121561194157600080fd5b813560ff8116811461183057600080fd5b60008060006060848603121561196757600080fd5b833561197281611861565b9250602084013561198281611861565b929592945050506040919091013590565b60008083601f8401126119a557600080fd5b50813567ffffffffffffffff8111156119bd57600080fd5b6020830191508360208285010111156114ca57600080fd5b6000806000806000606086880312156119ed57600080fd5b853567ffffffffffffffff811115611a0457600080fd5b611a1088828901611993565b909650945050602086013567ffffffffffffffff811115611a3057600080fd5b611a3c88828901611993565b96999598509660400135949350505050565b600060208284031215611a6057600080fd5b813561183081611861565b60008060408385031215611a7e57600080fd5b8235611a8981611861565b946020939093013593505050565b60008060408385031215611aaa57600080fd5b8235611ab581611861565b91506020830135611ac581611861565b809150509250929050565b600082611aed57634e487b7160e01b600052601260045260246000fd5b500790565b600060208284031215611b0457600080fd5b8151801515811461183057600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201611b3f57611b3f611b14565b5060000390565b81810381811115610f5657610f56611b14565b8082018281126000831280158216821582161715611b7957611b79611b14565b505092915050565b8181036000831280158383131683831282161715611ba157611ba1611b14565b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000611be5606083018789611ba8565b8281036020840152611bf8818688611ba8565b9150508260408301529695505050505050565b6000815160005b81811015611c2c5760208185018101518683015201611c12565b50600093019283525090919050565b6000611c50611c4a8386611c0b565b84611c0b565b949350505050565b600060208284031215611c6a57600080fd5b815161183081611861565b600060018201611c8757611c87611b14565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204799fdb3ab64eda45c5d24bf8ec2649127ad683ebfaa71eaa2ff3be11da99db364736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"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\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"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\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"wadSlashed\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]", + Bin: "0x61012060405234801561001157600080fd5b50604051612ba3380380612ba383398101604081905261003091610169565b84848484846001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e0521661010052610088610092565b50505050506101de565b600054610100900460ff16156100fe5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461014f576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461016657600080fd5b50565b600080600080600060a0868803121561018157600080fd5b855161018c81610151565b602087015190955061019d81610151565b60408701519094506101ae81610151565b60608701519093506101bf81610151565b60808701519092506101d081610151565b809150509295509295909350565b60805160a05160c05160e0516101005161293b6102686000396000818161055b015281816106fa01528181610a1101528181610d9601528181610e57015261100f015260006102610152600081816101f001528181610f2501526115090152600061033e0152600081816103870152818161062d01528181610957015261123e015261293b6000f3fe6080604052600436106101b75760003560e01c80639b4e4634116100ec578063cd6dc6871161008a578063f2fde38b11610064578063f2fde38b1461057d578063f6848d241461059d578063fabc1cbc146105d8578063fe243a17146105f857600080fd5b8063cd6dc687146104fc578063d48e88941461051c578063ea4d3c9b1461054957600080fd5b8063a38406a3116100c6578063a38406a314610458578063a3d75e0914610478578063a6a509be146104b1578063c4623ea1146104c757600080fd5b80639b4e4634146103ef5780639ba0627514610402578063a1ca780b1461043857600080fd5b8063715018a61161015957806384d810621161013357806384d8106214610360578063886f1195146103755780638da5cb5b146103a95780639104c319146103c757600080fd5b8063715018a6146102f7578063724af4231461030c57806374cdd7981461032c57600080fd5b806339b70e381161019557806339b70e381461024f578063595c6a67146102835780635ac86ab7146102985780635c975abb146102d857600080fd5b8063136439dd146101bc578063292b7b2b146101de5780632eae418c1461022f575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004611ba5565b610618565b005b3480156101ea57600080fd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101dc61024a366004611bd3565b6106ef565b34801561025b57600080fd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b34801561028f57600080fd5b506101dc610942565b3480156102a457600080fd5b506102c86102b3366004611c24565b606654600160ff9092169190911b9081161490565b6040519015158152602001610226565b3480156102e457600080fd5b506066545b604051908152602001610226565b34801561030357600080fd5b506101dc6109f4565b34801561031857600080fd5b506101dc610327366004611c47565b610a06565b34801561033857600080fd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b34801561036c57600080fd5b50610212610b2f565b34801561038157600080fd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b557600080fd5b506033546001600160a01b0316610212565b3480156103d357600080fd5b5061021273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101dc6103fd366004611cca565b610ba2565b34801561040e57600080fd5b5061021261041d366004611d43565b6098602052600090815260409020546001600160a01b031681565b34801561044457600080fd5b506101dc610453366004611d60565b610c65565b34801561046457600080fd5b50610212610473366004611d43565b610ec9565b34801561048457600080fd5b50610498610493366004611d43565b610f9d565b60405167ffffffffffffffff9091168152602001610226565b3480156104bd57600080fd5b506102e960995481565b3480156104d357600080fd5b506104e76104e2366004611bd3565b611001565b60408051928352602083019190915201610226565b34801561050857600080fd5b506101dc610517366004611d95565b6110a1565b34801561052857600080fd5b506102e9610537366004611d43565b609b6020526000908152604090205481565b34801561055557600080fd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b34801561058957600080fd5b506101dc610598366004611d43565b6111c3565b3480156105a957600080fd5b506102c86105b8366004611d43565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105e457600080fd5b506101dc6105f3366004611ba5565b61123c565b34801561060457600080fd5b506102e9610613366004611dc1565b611354565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190611dfa565b6106bd57604051631d77d47760e21b815260040160405180910390fd5b60665481811681146106e25760405163c61dca5d60e01b815260040160405180910390fd5b6106eb826113d8565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107385760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461077557604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b03841661079c576040516339b190bb60e11b815260040160405180910390fd5b600081136107bd5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000908152609b60205260408120549082908212156108bd5760006107eb83611e32565b905060008185111561080a5750806108038186611e4e565b9250610811565b5060009150835b600061081d8286611e61565b6001600160a01b038a166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061086e9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516108b191815260200190565b60405180910390a25050505b801561093a576001600160a01b03868116600081815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c490744290604401600060405180830381600087803b15801561092157600080fd5b505af1158015610935573d6000803e3d6000fd5b505050505b505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190611dfa565b6109e757604051631d77d47760e21b815260040160405180910390fd5b6109f26000196113d8565b565b6109fc611415565b6109f2600061146f565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a4f5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610a8c57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b6020526040812054610ab0908390611e89565b90506000811215610ad45760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610b219084815260200190565b60405180910390a250505050565b6066546000908190600190811603610b5a5760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031615610b915760405163031a852160e21b815260040160405180910390fd5b6000610b9b6114c1565b9250505090565b606654600090600190811603610bcb5760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031680610bf457610bf16114c1565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610c2a908b908b908b908b908b90600401611ed9565b6000604051808303818588803b158015610c4357600080fd5b505af1158015610c57573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038084166000908152609860205260409020548491163314610ca1576040516312e16d7160e11b815260040160405180910390fd5b610ca9611626565b6001600160a01b038416610cd0576040516339b190bb60e11b815260040160405180910390fd5b610cde633b9aca0083611f29565b15610cfc576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384166000908152609b60205260408120541215610d3457604051634b692bcf60e01b815260040160405180910390fd5b60008212610dfb57600080610d49868561167f565b604051631e328e7960e11b81526001600160a01b03898116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf290608401600060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b505050505050610eb9565b60008080610e128787610e0d88611e32565b6117c4565b6040516363ceb57d60e01b81526001600160a01b038b811660048301526024820185905267ffffffffffffffff841660448301526064820183905293965091945092507f0000000000000000000000000000000000000000000000000000000000000000909116906363ceb57d90608401600060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050505050505b610ec3600160c955565b50505050565b6001600160a01b0380821660009081526098602052604081205490911680610f9757610f94836001600160a01b031660001b60405180610940016040528061090e8152602001611ff861090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052610f799291602001611f7b565b604051602081830303815290604052805190602001206118f7565b90505b92915050565b6001600160a01b0381166000908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff169282019290925290610ff457670de0b6b3a7640000610ffa565b80602001515b9392505050565b600080336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461104d5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03851673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461108a57604051632711b74d60e11b815260040160405180910390fd5b611094868461167f565b9150915094509492505050565b600054610100900460ff16158080156110c15750600054600160ff909116105b806110db5750303b1580156110db575060005460ff166001145b6111435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611166576000805461ff0019166101001790555b61116f8361146f565b611178826113d8565b80156111be576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6111cb611415565b6001600160a01b0381166112305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161113a565b6112398161146f565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190611f98565b6001600160a01b0316336001600160a01b0316146112ef5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146113165760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461139357604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b6020526040812054126113cf576001600160a01b0383166000908152609b6020526040902054610f94565b50600092915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146109f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161113a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006099600081546114d290611fb5565b9091555060408051610940810190915261090e8082526000916115719183913391611ff86020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f198184030181529082905261155d9291602001611f7b565b604051602081830303815290604052611904565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156115b557600080fd5b505af11580156115c9573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b600260c954036116785760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161113a565b600260c955565b6000806001600160a01b0384166116a9576040516339b190bb60e11b815260040160405180910390fd5b60008312156116cb5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000908152609b602052604081205484916116f08383611e61565b6001600160a01b0388166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117419086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161178491815260200190565b60405180910390a2600081136117a357600080945094505050506117bd565b600082126117b157816117b4565b60005b86945094505050505b9250929050565b60008080806117d38587611e4e565b905060006117e18288611a08565b905060006117f782670de0b6b3a7640000611e4e565b905060006118048a610f9d565b9050600061181c67ffffffffffffffff831685611a1f565b604080516001600160a01b038e1681526020810186905267ffffffffffffffff83168183015290519192507f20c132e52d15486003bc2f07898f8e5fc4995a4eab251f1b32b9ac9556e16d75919081900360600190a16040805180820182526001815267ffffffffffffffff92831660208083019182526001600160a01b039e909e166000908152609d8f5283812092518354925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009290951691909102939093179055609b909b5299909920549990975095505050505050565b6000610f94838330611a34565b6000834710156119565760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161113a565b81516000036119a75760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161113a565b8282516020840186f590506001600160a01b038116610ffa5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161113a565b6000610f9483670de0b6b3a7640000846001611a5e565b6000610f948383670de0b6b3a7640000611abb565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a6c868686611abb565b90506001836002811115611a8257611a82611fce565b148015611a9f575060008480611a9a57611a9a611f13565b868809115b15611ab257611aaf600182611fe4565b90505b95945050505050565b6000808060001985870985870292508281108382030391505080600003611af557838281611aeb57611aeb611f13565b0492505050610ffa565b808411611b3c5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161113a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600060208284031215611bb757600080fd5b5035919050565b6001600160a01b038116811461123957600080fd5b60008060008060808587031215611be957600080fd5b8435611bf481611bbe565b93506020850135611c0481611bbe565b92506040850135611c1481611bbe565b9396929550929360600135925050565b600060208284031215611c3657600080fd5b813560ff81168114610ffa57600080fd5b600080600060608486031215611c5c57600080fd5b8335611c6781611bbe565b92506020840135611c7781611bbe565b929592945050506040919091013590565b60008083601f840112611c9a57600080fd5b50813567ffffffffffffffff811115611cb257600080fd5b6020830191508360208285010111156117bd57600080fd5b600080600080600060608688031215611ce257600080fd5b853567ffffffffffffffff811115611cf957600080fd5b611d0588828901611c88565b909650945050602086013567ffffffffffffffff811115611d2557600080fd5b611d3188828901611c88565b96999598509660400135949350505050565b600060208284031215611d5557600080fd5b8135610ffa81611bbe565b600080600060608486031215611d7557600080fd5b8335611d8081611bbe565b95602085013595506040909401359392505050565b60008060408385031215611da857600080fd5b8235611db381611bbe565b946020939093013593505050565b60008060408385031215611dd457600080fd5b8235611ddf81611bbe565b91506020830135611def81611bbe565b809150509250929050565b600060208284031215611e0c57600080fd5b81518015158114610ffa57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201611e4757611e47611e1c565b5060000390565b81810381811115610f9757610f97611e1c565b8082018281126000831280158216821582161715611e8157611e81611e1c565b505092915050565b8181036000831280158383131683831282161715611ea957611ea9611e1c565b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000611eed606083018789611eb0565b8281036020840152611f00818688611eb0565b9150508260408301529695505050505050565b634e487b7160e01b600052601260045260246000fd5b600082611f4657634e487b7160e01b600052601260045260246000fd5b500790565b6000815160005b81811015611f6c5760208185018101518683015201611f52565b50600093019283525090919050565b6000611f90611f8a8386611f4b565b84611f4b565b949350505050565b600060208284031215611faa57600080fd5b8151610ffa81611bbe565b600060018201611fc757611fc7611e1c565b5060010190565b634e487b7160e01b600052602160045260246000fd5b80820180821115610f9757610f97611e1c56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202397916da1e316257cf361bae205d06e2446bb9f757e38096b6033a61dd7c98c64736f6c634300081b0033", } // ContractEigenPodManagerABI is the input ABI used to generate the binding from. @@ -71,6 +71,8 @@ type ContractEigenPodManagerMethods interface { type ContractEigenPodManagerCalls interface { BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) + BeaconChainSlashingFactor(opts *bind.CallOpts, podOwner common.Address) (uint64, error) + DelegationManager(opts *bind.CallOpts) (common.Address, error) EigenPodBeacon(opts *bind.CallOpts) (common.Address, error) @@ -112,7 +114,7 @@ type ContractEigenPodManagerTransacts interface { PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) - RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) + RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) @@ -137,6 +139,10 @@ type ContractEigenPodManagerFilters interface { WatchBeaconChainETHWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *ContractEigenPodManagerBeaconChainETHWithdrawalCompleted, podOwner []common.Address) (event.Subscription, error) ParseBeaconChainETHWithdrawalCompleted(log types.Log) (*ContractEigenPodManagerBeaconChainETHWithdrawalCompleted, error) + FilterBeaconChainSlashingFactorDecreased(opts *bind.FilterOpts) (*ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator, error) + WatchBeaconChainSlashingFactorDecreased(opts *bind.WatchOpts, sink chan<- *ContractEigenPodManagerBeaconChainSlashingFactorDecreased) (event.Subscription, error) + ParseBeaconChainSlashingFactorDecreased(log types.Log) (*ContractEigenPodManagerBeaconChainSlashingFactorDecreased, error) + FilterInitialized(opts *bind.FilterOpts) (*ContractEigenPodManagerInitializedIterator, error) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractEigenPodManagerInitialized) (event.Subscription, error) ParseInitialized(log types.Log) (*ContractEigenPodManagerInitialized, error) @@ -351,6 +357,37 @@ func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) BeaconChai return _ContractEigenPodManager.Contract.BeaconChainETHStrategy(&_ContractEigenPodManager.CallOpts) } +// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09. +// +// Solidity: function beaconChainSlashingFactor(address podOwner) view returns(uint64) +func (_ContractEigenPodManager *ContractEigenPodManagerCaller) BeaconChainSlashingFactor(opts *bind.CallOpts, podOwner common.Address) (uint64, error) { + var out []interface{} + err := _ContractEigenPodManager.contract.Call(opts, &out, "beaconChainSlashingFactor", podOwner) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09. +// +// Solidity: function beaconChainSlashingFactor(address podOwner) view returns(uint64) +func (_ContractEigenPodManager *ContractEigenPodManagerSession) BeaconChainSlashingFactor(podOwner common.Address) (uint64, error) { + return _ContractEigenPodManager.Contract.BeaconChainSlashingFactor(&_ContractEigenPodManager.CallOpts, podOwner) +} + +// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09. +// +// Solidity: function beaconChainSlashingFactor(address podOwner) view returns(uint64) +func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) BeaconChainSlashingFactor(podOwner common.Address) (uint64, error) { + return _ContractEigenPodManager.Contract.BeaconChainSlashingFactor(&_ContractEigenPodManager.CallOpts, podOwner) +} + // DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. // // Solidity: function delegationManager() view returns(address) @@ -890,25 +927,25 @@ func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) PauseA return _ContractEigenPodManager.Contract.PauseAll(&_ContractEigenPodManager.TransactOpts) } -// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0x095e210c. +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b. // -// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta, uint64 proportionOfOldBalance) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) { - return _ContractEigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, sharesDelta, proportionOfOldBalance) +// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, prevRestakedBalanceWei, balanceDeltaWei) } -// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0x095e210c. +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b. // -// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta, uint64 proportionOfOldBalance) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_ContractEigenPodManager.TransactOpts, podOwner, sharesDelta, proportionOfOldBalance) +// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_ContractEigenPodManager.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei) } -// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0x095e210c. +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b. // -// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta, uint64 proportionOfOldBalance) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_ContractEigenPodManager.TransactOpts, podOwner, sharesDelta, proportionOfOldBalance) +// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_ContractEigenPodManager.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei) } // RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. @@ -1331,6 +1368,142 @@ func (_ContractEigenPodManager *ContractEigenPodManagerFilterer) ParseBeaconChai return event, nil } +// ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator is returned from FilterBeaconChainSlashingFactorDecreased and is used to iterate over the raw logs and unpacked data for BeaconChainSlashingFactorDecreased events raised by the ContractEigenPodManager contract. +type ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator struct { + Event *ContractEigenPodManagerBeaconChainSlashingFactorDecreased // 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 *ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator) 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(ContractEigenPodManagerBeaconChainSlashingFactorDecreased) + 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(ContractEigenPodManagerBeaconChainSlashingFactorDecreased) + 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 *ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractEigenPodManagerBeaconChainSlashingFactorDecreased represents a BeaconChainSlashingFactorDecreased event raised by the ContractEigenPodManager contract. +type ContractEigenPodManagerBeaconChainSlashingFactorDecreased struct { + Staker common.Address + WadSlashed *big.Int + NewBeaconChainSlashingFactor uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainSlashingFactorDecreased is a free log retrieval operation binding the contract event 0x20c132e52d15486003bc2f07898f8e5fc4995a4eab251f1b32b9ac9556e16d75. +// +// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint256 wadSlashed, uint64 newBeaconChainSlashingFactor) +func (_ContractEigenPodManager *ContractEigenPodManagerFilterer) FilterBeaconChainSlashingFactorDecreased(opts *bind.FilterOpts) (*ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator, error) { + + logs, sub, err := _ContractEigenPodManager.contract.FilterLogs(opts, "BeaconChainSlashingFactorDecreased") + if err != nil { + return nil, err + } + return &ContractEigenPodManagerBeaconChainSlashingFactorDecreasedIterator{contract: _ContractEigenPodManager.contract, event: "BeaconChainSlashingFactorDecreased", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainSlashingFactorDecreased is a free log subscription operation binding the contract event 0x20c132e52d15486003bc2f07898f8e5fc4995a4eab251f1b32b9ac9556e16d75. +// +// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint256 wadSlashed, uint64 newBeaconChainSlashingFactor) +func (_ContractEigenPodManager *ContractEigenPodManagerFilterer) WatchBeaconChainSlashingFactorDecreased(opts *bind.WatchOpts, sink chan<- *ContractEigenPodManagerBeaconChainSlashingFactorDecreased) (event.Subscription, error) { + + logs, sub, err := _ContractEigenPodManager.contract.WatchLogs(opts, "BeaconChainSlashingFactorDecreased") + 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(ContractEigenPodManagerBeaconChainSlashingFactorDecreased) + if err := _ContractEigenPodManager.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", 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 +} + +// ParseBeaconChainSlashingFactorDecreased is a log parse operation binding the contract event 0x20c132e52d15486003bc2f07898f8e5fc4995a4eab251f1b32b9ac9556e16d75. +// +// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint256 wadSlashed, uint64 newBeaconChainSlashingFactor) +func (_ContractEigenPodManager *ContractEigenPodManagerFilterer) ParseBeaconChainSlashingFactorDecreased(log types.Log) (*ContractEigenPodManagerBeaconChainSlashingFactorDecreased, error) { + event := new(ContractEigenPodManagerBeaconChainSlashingFactorDecreased) + if err := _ContractEigenPodManager.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ContractEigenPodManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractEigenPodManager contract. type ContractEigenPodManagerInitializedIterator struct { Event *ContractEigenPodManagerInitialized // Event containing the contract specifics and raw log diff --git a/contracts/bindings/IRewardsCoordinator/binding.go b/contracts/bindings/IRewardsCoordinator/binding.go index 00fb1363..39a85a10 100644 --- a/contracts/bindings/IRewardsCoordinator/binding.go +++ b/contracts/bindings/IRewardsCoordinator/binding.go @@ -43,6 +43,22 @@ type IRewardsCoordinatorTypesEarnerTreeMerkleLeaf struct { EarnerTokenRoot [32]byte } +// IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission struct { + StrategiesAndMultipliers []IRewardsCoordinatorTypesStrategyAndMultiplier + Token common.Address + OperatorRewards []IRewardsCoordinatorTypesOperatorReward + StartTimestamp uint32 + Duration uint32 + Description string +} + +// IRewardsCoordinatorTypesOperatorReward is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesOperatorReward struct { + Operator common.Address + Amount *big.Int +} + // IRewardsCoordinatorTypesRewardsMerkleClaim is an auto generated low-level Go binding around an user-defined struct. type IRewardsCoordinatorTypesRewardsMerkleClaim struct { RootIndex uint32 @@ -77,7 +93,7 @@ type IRewardsCoordinatorTypesTokenTreeMerkleLeaf struct { // ContractIRewardsCoordinatorMetaData contains all meta data concerning the ContractIRewardsCoordinator contract. var ContractIRewardsCoordinatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_REWARDS_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalOperatorCommissionBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_globalCommissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorCommissionBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalOperatorCommission\",\"inputs\":[{\"name\":\"_globalCommissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalCommissionBipsSet\",\"inputs\":[{\"name\":\"oldGlobalCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newGlobalCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_REWARDS_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]", } // ContractIRewardsCoordinatorABI is the input ABI used to generate the binding from. @@ -117,6 +133,8 @@ type ContractIRewardsCoordinatorCalls interface { CurrRewardsCalculationEndTimestamp(opts *bind.CallOpts) (uint32, error) + DefaultOperatorSplitBips(opts *bind.CallOpts) (uint16, error) + GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) @@ -125,18 +143,20 @@ type ContractIRewardsCoordinatorCalls interface { GetDistributionRootsLength(opts *bind.CallOpts) (*big.Int, error) - GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byte) (uint32, error) + GetOperatorAVSSplit(opts *bind.CallOpts, operator common.Address, avs common.Address) (uint16, error) - GlobalOperatorCommissionBips(opts *bind.CallOpts) (uint16, error) + GetOperatorPISplit(opts *bind.CallOpts, operator common.Address) (uint16, error) - OperatorCommissionBips(opts *bind.CallOpts, operator common.Address, avs common.Address) (uint16, error) + GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byte) (uint32, error) RewardsUpdater(opts *bind.CallOpts) (common.Address, error) } // ContractIRewardsCoordinatorTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractIRewardsCoordinatorTransacts interface { - CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) + CreateAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) + + CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) @@ -144,15 +164,23 @@ type ContractIRewardsCoordinatorTransacts interface { DisableRoot(opts *bind.TransactOpts, rootIndex uint32) (*types.Transaction, error) - Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) + Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) + ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) + SetActivationDelay(opts *bind.TransactOpts, _activationDelay uint32) (*types.Transaction, error) SetClaimerFor(opts *bind.TransactOpts, claimer common.Address) (*types.Transaction, error) - SetGlobalOperatorCommission(opts *bind.TransactOpts, _globalCommissionBips uint16) (*types.Transaction, error) + SetClaimerFor0(opts *bind.TransactOpts, earner common.Address, claimer common.Address) (*types.Transaction, error) + + SetDefaultOperatorSplit(opts *bind.TransactOpts, split uint16) (*types.Transaction, error) + + SetOperatorAVSSplit(opts *bind.TransactOpts, operator common.Address, avs common.Address, split uint16) (*types.Transaction, error) + + SetOperatorPISplit(opts *bind.TransactOpts, operator common.Address, split uint16) (*types.Transaction, error) SetRewardsForAllSubmitter(opts *bind.TransactOpts, _submitter common.Address, _newValue bool) (*types.Transaction, error) @@ -175,6 +203,10 @@ type ContractIRewardsCoordinatorFilters interface { WatchClaimerForSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorClaimerForSet, earner []common.Address, oldClaimer []common.Address, claimer []common.Address) (event.Subscription, error) ParseClaimerForSet(log types.Log) (*ContractIRewardsCoordinatorClaimerForSet, error) + FilterDefaultOperatorSplitBipsSet(opts *bind.FilterOpts) (*ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator, error) + WatchDefaultOperatorSplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet) (event.Subscription, error) + ParseDefaultOperatorSplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet, error) + FilterDistributionRootDisabled(opts *bind.FilterOpts, rootIndex []uint32) (*ContractIRewardsCoordinatorDistributionRootDisabledIterator, error) WatchDistributionRootDisabled(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorDistributionRootDisabled, rootIndex []uint32) (event.Subscription, error) ParseDistributionRootDisabled(log types.Log) (*ContractIRewardsCoordinatorDistributionRootDisabled, error) @@ -183,9 +215,17 @@ type ContractIRewardsCoordinatorFilters interface { WatchDistributionRootSubmitted(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorDistributionRootSubmitted, rootIndex []uint32, root [][32]byte, rewardsCalculationEndTimestamp []uint32) (event.Subscription, error) ParseDistributionRootSubmitted(log types.Log) (*ContractIRewardsCoordinatorDistributionRootSubmitted, error) - FilterGlobalCommissionBipsSet(opts *bind.FilterOpts) (*ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator, error) - WatchGlobalCommissionBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorGlobalCommissionBipsSet) (event.Subscription, error) - ParseGlobalCommissionBipsSet(log types.Log) (*ContractIRewardsCoordinatorGlobalCommissionBipsSet, error) + FilterOperatorAVSSplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address, avs []common.Address) (*ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator, error) + WatchOperatorAVSSplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorAVSSplitBipsSet, caller []common.Address, operator []common.Address, avs []common.Address) (event.Subscription, error) + ParseOperatorAVSSplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorAVSSplitBipsSet, error) + + FilterOperatorDirectedAVSRewardsSubmissionCreated(opts *bind.FilterOpts, caller []common.Address, avs []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator, error) + WatchOperatorDirectedAVSRewardsSubmissionCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated, caller []common.Address, avs []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (event.Subscription, error) + ParseOperatorDirectedAVSRewardsSubmissionCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated, error) + + FilterOperatorPISplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address) (*ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator, error) + WatchOperatorPISplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorPISplitBipsSet, caller []common.Address, operator []common.Address) (event.Subscription, error) + ParseOperatorPISplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorPISplitBipsSet, error) FilterRewardsClaimed(opts *bind.FilterOpts, earner []common.Address, claimer []common.Address, recipient []common.Address) (*ContractIRewardsCoordinatorRewardsClaimedIterator, error) WatchRewardsClaimed(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorRewardsClaimed, earner []common.Address, claimer []common.Address, recipient []common.Address) (event.Subscription, error) @@ -734,6 +774,37 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Cu return _ContractIRewardsCoordinator.Contract.CurrRewardsCalculationEndTimestamp(&_ContractIRewardsCoordinator.CallOpts) } +// DefaultOperatorSplitBips is a free data retrieval call binding the contract method 0x63f6a798. +// +// Solidity: function defaultOperatorSplitBips() view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) DefaultOperatorSplitBips(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "defaultOperatorSplitBips") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// DefaultOperatorSplitBips is a free data retrieval call binding the contract method 0x63f6a798. +// +// Solidity: function defaultOperatorSplitBips() view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) DefaultOperatorSplitBips() (uint16, error) { + return _ContractIRewardsCoordinator.Contract.DefaultOperatorSplitBips(&_ContractIRewardsCoordinator.CallOpts) +} + +// DefaultOperatorSplitBips is a free data retrieval call binding the contract method 0x63f6a798. +// +// Solidity: function defaultOperatorSplitBips() view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) DefaultOperatorSplitBips() (uint16, error) { + return _ContractIRewardsCoordinator.Contract.DefaultOperatorSplitBips(&_ContractIRewardsCoordinator.CallOpts) +} + // GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf. // // Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool)) @@ -858,43 +929,43 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Ge return _ContractIRewardsCoordinator.Contract.GetDistributionRootsLength(&_ContractIRewardsCoordinator.CallOpts) } -// GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. +// GetOperatorAVSSplit is a free data retrieval call binding the contract method 0xe063f81f. // -// Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byte) (uint32, error) { +// Solidity: function getOperatorAVSSplit(address operator, address avs) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetOperatorAVSSplit(opts *bind.CallOpts, operator common.Address, avs common.Address) (uint16, error) { var out []interface{} - err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getRootIndexFromHash", rootHash) + err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getOperatorAVSSplit", operator, avs) if err != nil { - return *new(uint32), err + return *new(uint16), err } - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) return out0, err } -// GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. +// GetOperatorAVSSplit is a free data retrieval call binding the contract method 0xe063f81f. // -// Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetRootIndexFromHash(rootHash [32]byte) (uint32, error) { - return _ContractIRewardsCoordinator.Contract.GetRootIndexFromHash(&_ContractIRewardsCoordinator.CallOpts, rootHash) +// Solidity: function getOperatorAVSSplit(address operator, address avs) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetOperatorAVSSplit(operator common.Address, avs common.Address) (uint16, error) { + return _ContractIRewardsCoordinator.Contract.GetOperatorAVSSplit(&_ContractIRewardsCoordinator.CallOpts, operator, avs) } -// GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. +// GetOperatorAVSSplit is a free data retrieval call binding the contract method 0xe063f81f. // -// Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetRootIndexFromHash(rootHash [32]byte) (uint32, error) { - return _ContractIRewardsCoordinator.Contract.GetRootIndexFromHash(&_ContractIRewardsCoordinator.CallOpts, rootHash) +// Solidity: function getOperatorAVSSplit(address operator, address avs) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetOperatorAVSSplit(operator common.Address, avs common.Address) (uint16, error) { + return _ContractIRewardsCoordinator.Contract.GetOperatorAVSSplit(&_ContractIRewardsCoordinator.CallOpts, operator, avs) } -// GlobalOperatorCommissionBips is a free data retrieval call binding the contract method 0x092db007. +// GetOperatorPISplit is a free data retrieval call binding the contract method 0x4b943960. // -// Solidity: function globalOperatorCommissionBips() view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GlobalOperatorCommissionBips(opts *bind.CallOpts) (uint16, error) { +// Solidity: function getOperatorPISplit(address operator) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetOperatorPISplit(opts *bind.CallOpts, operator common.Address) (uint16, error) { var out []interface{} - err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "globalOperatorCommissionBips") + err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getOperatorPISplit", operator) if err != nil { return *new(uint16), err @@ -906,49 +977,49 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GlobalOpe } -// GlobalOperatorCommissionBips is a free data retrieval call binding the contract method 0x092db007. +// GetOperatorPISplit is a free data retrieval call binding the contract method 0x4b943960. // -// Solidity: function globalOperatorCommissionBips() view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GlobalOperatorCommissionBips() (uint16, error) { - return _ContractIRewardsCoordinator.Contract.GlobalOperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts) +// Solidity: function getOperatorPISplit(address operator) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetOperatorPISplit(operator common.Address) (uint16, error) { + return _ContractIRewardsCoordinator.Contract.GetOperatorPISplit(&_ContractIRewardsCoordinator.CallOpts, operator) } -// GlobalOperatorCommissionBips is a free data retrieval call binding the contract method 0x092db007. +// GetOperatorPISplit is a free data retrieval call binding the contract method 0x4b943960. // -// Solidity: function globalOperatorCommissionBips() view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GlobalOperatorCommissionBips() (uint16, error) { - return _ContractIRewardsCoordinator.Contract.GlobalOperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts) +// Solidity: function getOperatorPISplit(address operator) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetOperatorPISplit(operator common.Address) (uint16, error) { + return _ContractIRewardsCoordinator.Contract.GetOperatorPISplit(&_ContractIRewardsCoordinator.CallOpts, operator) } -// OperatorCommissionBips is a free data retrieval call binding the contract method 0x22f19a64. +// GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. // -// Solidity: function operatorCommissionBips(address operator, address avs) view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) OperatorCommissionBips(opts *bind.CallOpts, operator common.Address, avs common.Address) (uint16, error) { +// Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byte) (uint32, error) { var out []interface{} - err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "operatorCommissionBips", operator, avs) + err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getRootIndexFromHash", rootHash) if err != nil { - return *new(uint16), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// OperatorCommissionBips is a free data retrieval call binding the contract method 0x22f19a64. +// GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. // -// Solidity: function operatorCommissionBips(address operator, address avs) view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) OperatorCommissionBips(operator common.Address, avs common.Address) (uint16, error) { - return _ContractIRewardsCoordinator.Contract.OperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts, operator, avs) +// Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetRootIndexFromHash(rootHash [32]byte) (uint32, error) { + return _ContractIRewardsCoordinator.Contract.GetRootIndexFromHash(&_ContractIRewardsCoordinator.CallOpts, rootHash) } -// OperatorCommissionBips is a free data retrieval call binding the contract method 0x22f19a64. +// GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. // -// Solidity: function operatorCommissionBips(address operator, address avs) view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) OperatorCommissionBips(operator common.Address, avs common.Address) (uint16, error) { - return _ContractIRewardsCoordinator.Contract.OperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts, operator, avs) +// Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetRootIndexFromHash(rootHash [32]byte) (uint32, error) { + return _ContractIRewardsCoordinator.Contract.GetRootIndexFromHash(&_ContractIRewardsCoordinator.CallOpts, rootHash) } // RewardsUpdater is a free data retrieval call binding the contract method 0xfbf1e2c1. @@ -982,25 +1053,46 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Re return _ContractIRewardsCoordinator.Contract.RewardsUpdater(&_ContractIRewardsCoordinator.CallOpts) } -// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. +// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x43ea4476. // -// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "createAVSRewardsSubmission", rewardsSubmissions) +// Solidity: function createAVSRewardsSubmission(address avs, ((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "createAVSRewardsSubmission", avs, rewardsSubmissions) } -// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. +// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x43ea4476. // -// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) +// Solidity: function createAVSRewardsSubmission(address avs, ((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateAVSRewardsSubmission(avs common.Address, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, avs, rewardsSubmissions) } -// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. +// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x43ea4476. // -// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) +// Solidity: function createAVSRewardsSubmission(address avs, ((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(avs common.Address, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, avs, rewardsSubmissions) +} + +// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa. +// +// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "createOperatorDirectedAVSRewardsSubmission", avs, operatorDirectedRewardsSubmissions) +} + +// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa. +// +// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions) +} + +// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa. +// +// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions) } // CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce. @@ -1068,23 +1160,23 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession // Initialize is a paid mutator transaction binding the contract method 0xf6efbb59. // -// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _globalCommissionBips) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _globalCommissionBips) +// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips) } // Initialize is a paid mutator transaction binding the contract method 0xf6efbb59. // -// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _globalCommissionBips) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.Initialize(&_ContractIRewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _globalCommissionBips) +// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.Initialize(&_ContractIRewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips) } // Initialize is a paid mutator transaction binding the contract method 0xf6efbb59. // -// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _globalCommissionBips) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.Initialize(&_ContractIRewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _globalCommissionBips) +// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.Initialize(&_ContractIRewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips) } // ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. @@ -1108,6 +1200,27 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession return _ContractIRewardsCoordinator.Contract.ProcessClaim(&_ContractIRewardsCoordinator.TransactOpts, claim, recipient) } +// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c. +// +// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "processClaims", claims, recipient) +} + +// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c. +// +// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.ProcessClaims(&_ContractIRewardsCoordinator.TransactOpts, claims, recipient) +} + +// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c. +// +// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.ProcessClaims(&_ContractIRewardsCoordinator.TransactOpts, claims, recipient) +} + // SetActivationDelay is a paid mutator transaction binding the contract method 0x58baaa3e. // // Solidity: function setActivationDelay(uint32 _activationDelay) returns() @@ -1150,25 +1263,88 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession return _ContractIRewardsCoordinator.Contract.SetClaimerFor(&_ContractIRewardsCoordinator.TransactOpts, claimer) } -// SetGlobalOperatorCommission is a paid mutator transaction binding the contract method 0xe221b245. +// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85. // -// Solidity: function setGlobalOperatorCommission(uint16 _globalCommissionBips) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetGlobalOperatorCommission(opts *bind.TransactOpts, _globalCommissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "setGlobalOperatorCommission", _globalCommissionBips) +// Solidity: function setClaimerFor(address earner, address claimer) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetClaimerFor0(opts *bind.TransactOpts, earner common.Address, claimer common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "setClaimerFor0", earner, claimer) } -// SetGlobalOperatorCommission is a paid mutator transaction binding the contract method 0xe221b245. +// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85. // -// Solidity: function setGlobalOperatorCommission(uint16 _globalCommissionBips) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetGlobalOperatorCommission(_globalCommissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.SetGlobalOperatorCommission(&_ContractIRewardsCoordinator.TransactOpts, _globalCommissionBips) +// Solidity: function setClaimerFor(address earner, address claimer) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetClaimerFor0(&_ContractIRewardsCoordinator.TransactOpts, earner, claimer) } -// SetGlobalOperatorCommission is a paid mutator transaction binding the contract method 0xe221b245. +// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85. // -// Solidity: function setGlobalOperatorCommission(uint16 _globalCommissionBips) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetGlobalOperatorCommission(_globalCommissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.SetGlobalOperatorCommission(&_ContractIRewardsCoordinator.TransactOpts, _globalCommissionBips) +// Solidity: function setClaimerFor(address earner, address claimer) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetClaimerFor0(&_ContractIRewardsCoordinator.TransactOpts, earner, claimer) +} + +// SetDefaultOperatorSplit is a paid mutator transaction binding the contract method 0xa50a1d9c. +// +// Solidity: function setDefaultOperatorSplit(uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetDefaultOperatorSplit(opts *bind.TransactOpts, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "setDefaultOperatorSplit", split) +} + +// SetDefaultOperatorSplit is a paid mutator transaction binding the contract method 0xa50a1d9c. +// +// Solidity: function setDefaultOperatorSplit(uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetDefaultOperatorSplit(split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetDefaultOperatorSplit(&_ContractIRewardsCoordinator.TransactOpts, split) +} + +// SetDefaultOperatorSplit is a paid mutator transaction binding the contract method 0xa50a1d9c. +// +// Solidity: function setDefaultOperatorSplit(uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetDefaultOperatorSplit(split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetDefaultOperatorSplit(&_ContractIRewardsCoordinator.TransactOpts, split) +} + +// SetOperatorAVSSplit is a paid mutator transaction binding the contract method 0xdcbb03b3. +// +// Solidity: function setOperatorAVSSplit(address operator, address avs, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetOperatorAVSSplit(opts *bind.TransactOpts, operator common.Address, avs common.Address, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "setOperatorAVSSplit", operator, avs, split) +} + +// SetOperatorAVSSplit is a paid mutator transaction binding the contract method 0xdcbb03b3. +// +// Solidity: function setOperatorAVSSplit(address operator, address avs, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetOperatorAVSSplit(operator common.Address, avs common.Address, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetOperatorAVSSplit(&_ContractIRewardsCoordinator.TransactOpts, operator, avs, split) +} + +// SetOperatorAVSSplit is a paid mutator transaction binding the contract method 0xdcbb03b3. +// +// Solidity: function setOperatorAVSSplit(address operator, address avs, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetOperatorAVSSplit(operator common.Address, avs common.Address, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetOperatorAVSSplit(&_ContractIRewardsCoordinator.TransactOpts, operator, avs, split) +} + +// SetOperatorPISplit is a paid mutator transaction binding the contract method 0xb3dbb0e0. +// +// Solidity: function setOperatorPISplit(address operator, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetOperatorPISplit(opts *bind.TransactOpts, operator common.Address, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "setOperatorPISplit", operator, split) +} + +// SetOperatorPISplit is a paid mutator transaction binding the contract method 0xb3dbb0e0. +// +// Solidity: function setOperatorPISplit(address operator, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetOperatorPISplit(operator common.Address, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetOperatorPISplit(&_ContractIRewardsCoordinator.TransactOpts, operator, split) +} + +// SetOperatorPISplit is a paid mutator transaction binding the contract method 0xb3dbb0e0. +// +// Solidity: function setOperatorPISplit(address operator, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetOperatorPISplit(operator common.Address, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetOperatorPISplit(&_ContractIRewardsCoordinator.TransactOpts, operator, split) } // SetRewardsForAllSubmitter is a paid mutator transaction binding the contract method 0x0eb38345. @@ -1694,6 +1870,141 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseCl return event, nil } +// ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator is returned from FilterDefaultOperatorSplitBipsSet and is used to iterate over the raw logs and unpacked data for DefaultOperatorSplitBipsSet events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator struct { + Event *ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet // 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 *ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator) 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(ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet) + 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(ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet) + 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 *ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet represents a DefaultOperatorSplitBipsSet event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet struct { + OldDefaultOperatorSplitBips uint16 + NewDefaultOperatorSplitBips uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDefaultOperatorSplitBipsSet is a free log retrieval operation binding the contract event 0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e. +// +// Solidity: event DefaultOperatorSplitBipsSet(uint16 oldDefaultOperatorSplitBips, uint16 newDefaultOperatorSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterDefaultOperatorSplitBipsSet(opts *bind.FilterOpts) (*ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator, error) { + + logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "DefaultOperatorSplitBipsSet") + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorDefaultOperatorSplitBipsSetIterator{contract: _ContractIRewardsCoordinator.contract, event: "DefaultOperatorSplitBipsSet", logs: logs, sub: sub}, nil +} + +// WatchDefaultOperatorSplitBipsSet is a free log subscription operation binding the contract event 0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e. +// +// Solidity: event DefaultOperatorSplitBipsSet(uint16 oldDefaultOperatorSplitBips, uint16 newDefaultOperatorSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchDefaultOperatorSplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet) (event.Subscription, error) { + + logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "DefaultOperatorSplitBipsSet") + 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(ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "DefaultOperatorSplitBipsSet", 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 +} + +// ParseDefaultOperatorSplitBipsSet is a log parse operation binding the contract event 0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e. +// +// Solidity: event DefaultOperatorSplitBipsSet(uint16 oldDefaultOperatorSplitBips, uint16 newDefaultOperatorSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseDefaultOperatorSplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet, error) { + event := new(ContractIRewardsCoordinatorDefaultOperatorSplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "DefaultOperatorSplitBipsSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ContractIRewardsCoordinatorDistributionRootDisabledIterator is returned from FilterDistributionRootDisabled and is used to iterate over the raw logs and unpacked data for DistributionRootDisabled events raised by the ContractIRewardsCoordinator contract. type ContractIRewardsCoordinatorDistributionRootDisabledIterator struct { Event *ContractIRewardsCoordinatorDistributionRootDisabled // Event containing the contract specifics and raw log @@ -2001,9 +2312,9 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseDi return event, nil } -// ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator is returned from FilterGlobalCommissionBipsSet and is used to iterate over the raw logs and unpacked data for GlobalCommissionBipsSet events raised by the ContractIRewardsCoordinator contract. -type ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator struct { - Event *ContractIRewardsCoordinatorGlobalCommissionBipsSet // Event containing the contract specifics and raw log +// ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator is returned from FilterOperatorAVSSplitBipsSet and is used to iterate over the raw logs and unpacked data for OperatorAVSSplitBipsSet events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator struct { + Event *ContractIRewardsCoordinatorOperatorAVSSplitBipsSet // 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 @@ -2017,7 +2328,7 @@ type ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator 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 *ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator) Next() bool { +func (it *ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2026,7 +2337,7 @@ func (it *ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator) Next() boo if it.done { select { case log := <-it.logs: - it.Event = new(ContractIRewardsCoordinatorGlobalCommissionBipsSet) + it.Event = new(ContractIRewardsCoordinatorOperatorAVSSplitBipsSet) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2041,7 +2352,7 @@ func (it *ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator) Next() boo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractIRewardsCoordinatorGlobalCommissionBipsSet) + it.Event = new(ContractIRewardsCoordinatorOperatorAVSSplitBipsSet) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2057,42 +2368,392 @@ func (it *ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator) Next() boo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator) Error() error { +func (it *ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator) Close() error { +func (it *ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractIRewardsCoordinatorGlobalCommissionBipsSet represents a GlobalCommissionBipsSet event raised by the ContractIRewardsCoordinator contract. -type ContractIRewardsCoordinatorGlobalCommissionBipsSet struct { - OldGlobalCommissionBips uint16 - NewGlobalCommissionBips uint16 +// ContractIRewardsCoordinatorOperatorAVSSplitBipsSet represents a OperatorAVSSplitBipsSet event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorAVSSplitBipsSet struct { + Caller common.Address + Operator common.Address + Avs common.Address + ActivatedAt uint32 + OldOperatorAVSSplitBips uint16 + NewOperatorAVSSplitBips uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalCommissionBipsSet is a free log retrieval operation binding the contract event 0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06. +// FilterOperatorAVSSplitBipsSet is a free log retrieval operation binding the contract event 0x48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934. +// +// Solidity: event OperatorAVSSplitBipsSet(address indexed caller, address indexed operator, address indexed avs, uint32 activatedAt, uint16 oldOperatorAVSSplitBips, uint16 newOperatorAVSSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorAVSSplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address, avs []common.Address) (*ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + 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 := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorAVSSplitBipsSet", callerRule, operatorRule, avsRule) + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorOperatorAVSSplitBipsSetIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorAVSSplitBipsSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSSplitBipsSet is a free log subscription operation binding the contract event 0x48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934. +// +// Solidity: event OperatorAVSSplitBipsSet(address indexed caller, address indexed operator, address indexed avs, uint32 activatedAt, uint16 oldOperatorAVSSplitBips, uint16 newOperatorAVSSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorAVSSplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorAVSSplitBipsSet, caller []common.Address, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + 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 := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorAVSSplitBipsSet", callerRule, 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(ContractIRewardsCoordinatorOperatorAVSSplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorAVSSplitBipsSet", 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 +} + +// ParseOperatorAVSSplitBipsSet is a log parse operation binding the contract event 0x48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934. +// +// Solidity: event OperatorAVSSplitBipsSet(address indexed caller, address indexed operator, address indexed avs, uint32 activatedAt, uint16 oldOperatorAVSSplitBips, uint16 newOperatorAVSSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorAVSSplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorAVSSplitBipsSet, error) { + event := new(ContractIRewardsCoordinatorOperatorAVSSplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorAVSSplitBipsSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator is returned from FilterOperatorDirectedAVSRewardsSubmissionCreated and is used to iterate over the raw logs and unpacked data for OperatorDirectedAVSRewardsSubmissionCreated events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator struct { + Event *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated // 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 *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator) 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(ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated) + 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(ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated) + 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 *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated represents a OperatorDirectedAVSRewardsSubmissionCreated event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated struct { + Caller common.Address + Avs common.Address + OperatorDirectedRewardsSubmissionHash [32]byte + SubmissionNonce *big.Int + OperatorDirectedRewardsSubmission IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDirectedAVSRewardsSubmissionCreated is a free log retrieval operation binding the contract event 0xfc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0. +// +// Solidity: event OperatorDirectedAVSRewardsSubmissionCreated(address indexed caller, address indexed avs, bytes32 indexed operatorDirectedRewardsSubmissionHash, uint256 submissionNonce, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string) operatorDirectedRewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorDirectedAVSRewardsSubmissionCreated(opts *bind.FilterOpts, caller []common.Address, avs []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + var operatorDirectedRewardsSubmissionHashRule []interface{} + for _, operatorDirectedRewardsSubmissionHashItem := range operatorDirectedRewardsSubmissionHash { + operatorDirectedRewardsSubmissionHashRule = append(operatorDirectedRewardsSubmissionHashRule, operatorDirectedRewardsSubmissionHashItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorDirectedAVSRewardsSubmissionCreated", callerRule, avsRule, operatorDirectedRewardsSubmissionHashRule) + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreatedIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorDirectedAVSRewardsSubmissionCreated", logs: logs, sub: sub}, nil +} + +// WatchOperatorDirectedAVSRewardsSubmissionCreated is a free log subscription operation binding the contract event 0xfc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0. // -// Solidity: event GlobalCommissionBipsSet(uint16 oldGlobalCommissionBips, uint16 newGlobalCommissionBips) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterGlobalCommissionBipsSet(opts *bind.FilterOpts) (*ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator, error) { +// Solidity: event OperatorDirectedAVSRewardsSubmissionCreated(address indexed caller, address indexed avs, bytes32 indexed operatorDirectedRewardsSubmissionHash, uint256 submissionNonce, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string) operatorDirectedRewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorDirectedAVSRewardsSubmissionCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated, caller []common.Address, avs []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (event.Subscription, error) { - logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "GlobalCommissionBipsSet") + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + var operatorDirectedRewardsSubmissionHashRule []interface{} + for _, operatorDirectedRewardsSubmissionHashItem := range operatorDirectedRewardsSubmissionHash { + operatorDirectedRewardsSubmissionHashRule = append(operatorDirectedRewardsSubmissionHashRule, operatorDirectedRewardsSubmissionHashItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorDirectedAVSRewardsSubmissionCreated", callerRule, avsRule, operatorDirectedRewardsSubmissionHashRule) if err != nil { return nil, err } - return &ContractIRewardsCoordinatorGlobalCommissionBipsSetIterator{contract: _ContractIRewardsCoordinator.contract, event: "GlobalCommissionBipsSet", logs: logs, sub: sub}, nil + 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(ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorDirectedAVSRewardsSubmissionCreated", 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 } -// WatchGlobalCommissionBipsSet is a free log subscription operation binding the contract event 0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06. +// ParseOperatorDirectedAVSRewardsSubmissionCreated is a log parse operation binding the contract event 0xfc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0. // -// Solidity: event GlobalCommissionBipsSet(uint16 oldGlobalCommissionBips, uint16 newGlobalCommissionBips) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchGlobalCommissionBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorGlobalCommissionBipsSet) (event.Subscription, error) { +// Solidity: event OperatorDirectedAVSRewardsSubmissionCreated(address indexed caller, address indexed avs, bytes32 indexed operatorDirectedRewardsSubmissionHash, uint256 submissionNonce, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string) operatorDirectedRewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorDirectedAVSRewardsSubmissionCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated, error) { + event := new(ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorDirectedAVSRewardsSubmissionCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator is returned from FilterOperatorPISplitBipsSet and is used to iterate over the raw logs and unpacked data for OperatorPISplitBipsSet events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator struct { + Event *ContractIRewardsCoordinatorOperatorPISplitBipsSet // 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 *ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator) 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(ContractIRewardsCoordinatorOperatorPISplitBipsSet) + 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(ContractIRewardsCoordinatorOperatorPISplitBipsSet) + 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 *ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIRewardsCoordinatorOperatorPISplitBipsSet represents a OperatorPISplitBipsSet event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorPISplitBipsSet struct { + Caller common.Address + Operator common.Address + ActivatedAt uint32 + OldOperatorPISplitBips uint16 + NewOperatorPISplitBips uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorPISplitBipsSet is a free log retrieval operation binding the contract event 0xd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f74. +// +// Solidity: event OperatorPISplitBipsSet(address indexed caller, address indexed operator, uint32 activatedAt, uint16 oldOperatorPISplitBips, uint16 newOperatorPISplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorPISplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address) (*ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorPISplitBipsSet", callerRule, operatorRule) + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorPISplitBipsSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorPISplitBipsSet is a free log subscription operation binding the contract event 0xd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f74. +// +// Solidity: event OperatorPISplitBipsSet(address indexed caller, address indexed operator, uint32 activatedAt, uint16 oldOperatorPISplitBips, uint16 newOperatorPISplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorPISplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorPISplitBipsSet, caller []common.Address, operator []common.Address) (event.Subscription, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } - logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "GlobalCommissionBipsSet") + logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorPISplitBipsSet", callerRule, operatorRule) if err != nil { return nil, err } @@ -2102,8 +2763,8 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchGl select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractIRewardsCoordinatorGlobalCommissionBipsSet) - if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "GlobalCommissionBipsSet", log); err != nil { + event := new(ContractIRewardsCoordinatorOperatorPISplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorPISplitBipsSet", log); err != nil { return err } event.Raw = log @@ -2124,12 +2785,12 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchGl }), nil } -// ParseGlobalCommissionBipsSet is a log parse operation binding the contract event 0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06. +// ParseOperatorPISplitBipsSet is a log parse operation binding the contract event 0xd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f74. // -// Solidity: event GlobalCommissionBipsSet(uint16 oldGlobalCommissionBips, uint16 newGlobalCommissionBips) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseGlobalCommissionBipsSet(log types.Log) (*ContractIRewardsCoordinatorGlobalCommissionBipsSet, error) { - event := new(ContractIRewardsCoordinatorGlobalCommissionBipsSet) - if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "GlobalCommissionBipsSet", log); err != nil { +// Solidity: event OperatorPISplitBipsSet(address indexed caller, address indexed operator, uint32 activatedAt, uint16 oldOperatorPISplitBips, uint16 newOperatorPISplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorPISplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorPISplitBipsSet, error) { + event := new(ContractIRewardsCoordinatorOperatorPISplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorPISplitBipsSet", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/bindings/PermissionController/binding.go b/contracts/bindings/PermissionController/binding.go new file mode 100644 index 00000000..47765f16 --- /dev/null +++ b/contracts/bindings/PermissionController/binding.go @@ -0,0 +1,1676 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractPermissionController + +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 +) + +// ContractPermissionControllerMetaData contains all meta data concerning the ContractPermissionController contract. +var ContractPermissionControllerMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acceptAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canCall\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointeePermissions\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointees\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pendingAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removePendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminAdded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AdminAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotHaveZeroAdmins\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAdmin\",\"inputs\":[]}]", + Bin: "0x6080604052348015600f57600080fd5b506016601a565b60d7565b600054610100900460ff161560855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161460d5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6110e3806100e66000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063910067451161008c578063ad8aca7711610066578063ad8aca77146101d8578063df595cb8146101eb578063eb5a4e87146101fe578063fddbdefd1461021157600080fd5b8063910067451461018f578063950d806e146101b2578063ad5f2210146101c557600080fd5b8063628806ef116100c8578063628806ef1461012a5780636bddfa1f1461013d5780638129fc1c14610166578063882a3b381461016e57600080fd5b806306641201146100ef578063268959e5146101045780634f906cf914610117575b600080fd5b6101026100fd366004610e86565b610224565b005b610102610112366004610eda565b610349565b610102610125366004610eda565b610425565b610102610138366004610f0d565b6104c9565b61015061014b366004610f0d565b610558565b60405161015d9190610f6d565b60405180910390f35b610102610582565b61018161017c366004610eda565b61068f565b60405161015d929190610f80565b6101a261019d366004610eda565b610808565b604051901515815260200161015d565b6101026101c0366004610e86565b61087b565b6101506101d3366004610f0d565b610990565b6101a26101e6366004610eda565b610a3b565b6101a26101f9366004610e86565b610a5d565b61010261020c366004610eda565b610ab4565b61015061021f366004610fe4565b610b83565b8361022f8133610808565b61024c57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03851660009081526001602052604081209061026f8585610bc3565b6001600160a01b038716600090815260048401602052604090209091506102969082610bf0565b6102b35760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b038616600090815260048301602052604090206102d79082610c08565b50600081815260058301602052604090206102f29087610c14565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c68787604051610338929190611027565b60405180910390a350505050505050565b816103548133610808565b61037157604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526001602081905260409091206002019061039982610c29565b116103b7576040516310ce892b60e31b815260040160405180910390fd5b6103c18184610c14565b6103de57604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104308133610808565b61044d57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260016020526040902061046f8184610c14565b61048c5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610417565b6001600160a01b03811660009081526001602052604090206104eb8133610c14565b6105085760405163bed8295f60e01b815260040160405180910390fd5b6105156002820133610c33565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b038116600090815260016020526040902060609061057c90610c48565b92915050565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b6106235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015610646576000805461ff0019166101001790555b801561068c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b0380831660009081526001602090815260408083209385168352600490930190529081206060918291906106c982610c29565b905060008167ffffffffffffffff8111156106e6576106e661104a565b60405190808252806020026020018201604052801561070f578160200160208202803683370190505b50905060008267ffffffffffffffff81111561072d5761072d61104a565b604051908082528060200260200182016040528015610756578160200160208202803683370190505b50905060005b838110156107fa5760008061078d6107748885610c55565b606081901c9160a09190911b6001600160e01b03191690565b91509150818584815181106107a4576107a4611060565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106107d7576107d7611060565b6001600160e01b031990921660209283029190910190910152505060010161075c565b509097909650945050505050565b6001600160a01b038216600090815260016020526040812061082c90600201610c29565b60000361084f57816001600160a01b0316836001600160a01b031614905061057c565b6001600160a01b03831660009081526001602052604090206108749060020183610c61565b9392505050565b836108868133610808565b6108a357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385166000908152600160205260408120906108c68585610bc3565b6001600160a01b038716600090815260048401602052604090209091506108ed9082610bf0565b1561090b5760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386166000908152600483016020526040902061092f9082610c83565b506000818152600583016020526040902061094a9087610c33565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc01698787604051610338929190611027565b6001600160a01b03811660009081526001602052604090206060906109b790600201610c29565b600003610a12576040805160018082528183019092526000916020808301908036833701905050905082816000815181106109f4576109f4611060565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b038216600090815260016020526040902061057c90600201610c48565b919050565b6001600160a01b03821660009081526001602052604081206108749083610c61565b6000610a698585610808565b80610aab5750610aab610a7c8484610bc3565b6001600160a01b038088166000908152600160209081526040808320938a168352600490930190522090610bf0565b95945050505050565b81610abf8133610808565b610adc57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600160205260409020610b016002820184610c61565b15610b1f5760405163130160e560e31b815260040160405180910390fd5b610b298184610c33565b610b46576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610417565b60606000610b918484610bc3565b6001600160a01b03861660009081526001602090815260408083208484526005019091529020909150610aab90610c48565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b60008181526001830160205260408120541515610874565b60006108748383610c8f565b6000610874836001600160a01b038416610c8f565b600061057c825490565b6000610874836001600160a01b038416610d82565b6060600061087483610dd1565b60006108748383610e2d565b6001600160a01b03811660009081526001830160205260408120541515610874565b60006108748383610d82565b60008181526001830160205260408120548015610d78576000610cb3600183611076565b8554909150600090610cc790600190611076565b9050818114610d2c576000866000018281548110610ce757610ce7611060565b9060005260206000200154905080876000018481548110610d0a57610d0a611060565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610d3d57610d3d611097565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061057c565b600091505061057c565b6000818152600183016020526040812054610dc95750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561057c565b50600061057c565b606081600001805480602002602001604051908101604052809291908181526020018280548015610e2157602002820191906000526020600020905b815481526020019060010190808311610e0d575b50505050509050919050565b6000826000018281548110610e4457610e44611060565b9060005260206000200154905092915050565b80356001600160a01b0381168114610a3657600080fd5b80356001600160e01b031981168114610a3657600080fd5b60008060008060808587031215610e9c57600080fd5b610ea585610e57565b9350610eb360208601610e57565b9250610ec160408601610e57565b9150610ecf60608601610e6e565b905092959194509250565b60008060408385031215610eed57600080fd5b610ef683610e57565b9150610f0460208401610e57565b90509250929050565b600060208284031215610f1f57600080fd5b61087482610e57565b600081518084526020840193506020830160005b82811015610f635781516001600160a01b0316865260209586019590910190600101610f3c565b5093949350505050565b6020815260006108746020830184610f28565b604081526000610f936040830185610f28565b828103602084015280845180835260208301915060208601925060005b81811015610fd85783516001600160e01b031916835260209384019390920191600101610fb0565b50909695505050505050565b600080600060608486031215610ff957600080fd5b61100284610e57565b925061101060208501610e57565b915061101e60408501610e6e565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8181038181111561057c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122078eb2e89a3bab2c383594b3a5155d4c79bbf6465b03d0b9c7da3ff03e3d3ade564736f6c634300081b0033", +} + +// ContractPermissionControllerABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractPermissionControllerMetaData.ABI instead. +var ContractPermissionControllerABI = ContractPermissionControllerMetaData.ABI + +// ContractPermissionControllerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ContractPermissionControllerMetaData.Bin instead. +var ContractPermissionControllerBin = ContractPermissionControllerMetaData.Bin + +// DeployContractPermissionController deploys a new Ethereum contract, binding an instance of ContractPermissionController to it. +func DeployContractPermissionController(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ContractPermissionController, error) { + parsed, err := ContractPermissionControllerMetaData.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(ContractPermissionControllerBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ContractPermissionController{ContractPermissionControllerCaller: ContractPermissionControllerCaller{contract: contract}, ContractPermissionControllerTransactor: ContractPermissionControllerTransactor{contract: contract}, ContractPermissionControllerFilterer: ContractPermissionControllerFilterer{contract: contract}}, nil +} + +// ContractPermissionControllerMethods is an auto generated interface around an Ethereum contract. +type ContractPermissionControllerMethods interface { + ContractPermissionControllerCalls + ContractPermissionControllerTransacts + ContractPermissionControllerFilters +} + +// ContractPermissionControllerCalls is an auto generated interface that defines the call methods available for an Ethereum contract. +type ContractPermissionControllerCalls interface { + CanCall(opts *bind.CallOpts, account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) + + GetAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) + + GetAppointeePermissions(opts *bind.CallOpts, account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) + + GetAppointees(opts *bind.CallOpts, account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) + + GetPendingAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) + + IsAdmin(opts *bind.CallOpts, account common.Address, caller common.Address) (bool, error) + + IsPendingAdmin(opts *bind.CallOpts, account common.Address, pendingAdmin common.Address) (bool, error) +} + +// ContractPermissionControllerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. +type ContractPermissionControllerTransacts interface { + AcceptAdmin(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) + + AddPendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) + + Initialize(opts *bind.TransactOpts) (*types.Transaction, error) + + RemoveAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) + + RemoveAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) + + RemovePendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) + + SetAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) +} + +// ContractPermissionControllerFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. +type ContractPermissionControllerFilters interface { + FilterAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerAdminRemovedIterator, error) + WatchAdminRemoved(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAdminRemoved, account []common.Address) (event.Subscription, error) + ParseAdminRemoved(log types.Log) (*ContractPermissionControllerAdminRemoved, error) + + FilterAdminSet(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerAdminSetIterator, error) + WatchAdminSet(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAdminSet, account []common.Address) (event.Subscription, error) + ParseAdminSet(log types.Log) (*ContractPermissionControllerAdminSet, error) + + FilterAppointeeRemoved(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*ContractPermissionControllerAppointeeRemovedIterator, error) + WatchAppointeeRemoved(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAppointeeRemoved, account []common.Address, appointee []common.Address) (event.Subscription, error) + ParseAppointeeRemoved(log types.Log) (*ContractPermissionControllerAppointeeRemoved, error) + + FilterAppointeeSet(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*ContractPermissionControllerAppointeeSetIterator, error) + WatchAppointeeSet(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAppointeeSet, account []common.Address, appointee []common.Address) (event.Subscription, error) + ParseAppointeeSet(log types.Log) (*ContractPermissionControllerAppointeeSet, error) + + FilterInitialized(opts *bind.FilterOpts) (*ContractPermissionControllerInitializedIterator, error) + WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerInitialized) (event.Subscription, error) + ParseInitialized(log types.Log) (*ContractPermissionControllerInitialized, error) + + FilterPendingAdminAdded(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerPendingAdminAddedIterator, error) + WatchPendingAdminAdded(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerPendingAdminAdded, account []common.Address) (event.Subscription, error) + ParsePendingAdminAdded(log types.Log) (*ContractPermissionControllerPendingAdminAdded, error) + + FilterPendingAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerPendingAdminRemovedIterator, error) + WatchPendingAdminRemoved(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerPendingAdminRemoved, account []common.Address) (event.Subscription, error) + ParsePendingAdminRemoved(log types.Log) (*ContractPermissionControllerPendingAdminRemoved, error) +} + +// ContractPermissionController is an auto generated Go binding around an Ethereum contract. +type ContractPermissionController struct { + ContractPermissionControllerCaller // Read-only binding to the contract + ContractPermissionControllerTransactor // Write-only binding to the contract + ContractPermissionControllerFilterer // Log filterer for contract events +} + +// ContractPermissionController implements the ContractPermissionControllerMethods interface. +var _ ContractPermissionControllerMethods = (*ContractPermissionController)(nil) + +// ContractPermissionControllerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractPermissionControllerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractPermissionControllerCaller implements the ContractPermissionControllerCalls interface. +var _ ContractPermissionControllerCalls = (*ContractPermissionControllerCaller)(nil) + +// ContractPermissionControllerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractPermissionControllerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractPermissionControllerTransactor implements the ContractPermissionControllerTransacts interface. +var _ ContractPermissionControllerTransacts = (*ContractPermissionControllerTransactor)(nil) + +// ContractPermissionControllerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractPermissionControllerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractPermissionControllerFilterer implements the ContractPermissionControllerFilters interface. +var _ ContractPermissionControllerFilters = (*ContractPermissionControllerFilterer)(nil) + +// ContractPermissionControllerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractPermissionControllerSession struct { + Contract *ContractPermissionController // 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 +} + +// ContractPermissionControllerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractPermissionControllerCallerSession struct { + Contract *ContractPermissionControllerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractPermissionControllerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractPermissionControllerTransactorSession struct { + Contract *ContractPermissionControllerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractPermissionControllerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractPermissionControllerRaw struct { + Contract *ContractPermissionController // Generic contract binding to access the raw methods on +} + +// ContractPermissionControllerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractPermissionControllerCallerRaw struct { + Contract *ContractPermissionControllerCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractPermissionControllerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractPermissionControllerTransactorRaw struct { + Contract *ContractPermissionControllerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractPermissionController creates a new instance of ContractPermissionController, bound to a specific deployed contract. +func NewContractPermissionController(address common.Address, backend bind.ContractBackend) (*ContractPermissionController, error) { + contract, err := bindContractPermissionController(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractPermissionController{ContractPermissionControllerCaller: ContractPermissionControllerCaller{contract: contract}, ContractPermissionControllerTransactor: ContractPermissionControllerTransactor{contract: contract}, ContractPermissionControllerFilterer: ContractPermissionControllerFilterer{contract: contract}}, nil +} + +// NewContractPermissionControllerCaller creates a new read-only instance of ContractPermissionController, bound to a specific deployed contract. +func NewContractPermissionControllerCaller(address common.Address, caller bind.ContractCaller) (*ContractPermissionControllerCaller, error) { + contract, err := bindContractPermissionController(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractPermissionControllerCaller{contract: contract}, nil +} + +// NewContractPermissionControllerTransactor creates a new write-only instance of ContractPermissionController, bound to a specific deployed contract. +func NewContractPermissionControllerTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractPermissionControllerTransactor, error) { + contract, err := bindContractPermissionController(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractPermissionControllerTransactor{contract: contract}, nil +} + +// NewContractPermissionControllerFilterer creates a new log filterer instance of ContractPermissionController, bound to a specific deployed contract. +func NewContractPermissionControllerFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractPermissionControllerFilterer, error) { + contract, err := bindContractPermissionController(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractPermissionControllerFilterer{contract: contract}, nil +} + +// bindContractPermissionController binds a generic wrapper to an already deployed contract. +func bindContractPermissionController(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractPermissionControllerMetaData.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 (_ContractPermissionController *ContractPermissionControllerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractPermissionController.Contract.ContractPermissionControllerCaller.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 (_ContractPermissionController *ContractPermissionControllerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractPermissionController.Contract.ContractPermissionControllerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractPermissionController *ContractPermissionControllerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractPermissionController.Contract.ContractPermissionControllerTransactor.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 (_ContractPermissionController *ContractPermissionControllerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractPermissionController.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 (_ContractPermissionController *ContractPermissionControllerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractPermissionController.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractPermissionController *ContractPermissionControllerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractPermissionController.Contract.contract.Transact(opts, method, params...) +} + +// CanCall is a free data retrieval call binding the contract method 0xdf595cb8. +// +// Solidity: function canCall(address account, address caller, address target, bytes4 selector) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerCaller) CanCall(opts *bind.CallOpts, account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "canCall", account, caller, target, selector) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CanCall is a free data retrieval call binding the contract method 0xdf595cb8. +// +// Solidity: function canCall(address account, address caller, address target, bytes4 selector) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) { + return _ContractPermissionController.Contract.CanCall(&_ContractPermissionController.CallOpts, account, caller, target, selector) +} + +// CanCall is a free data retrieval call binding the contract method 0xdf595cb8. +// +// Solidity: function canCall(address account, address caller, address target, bytes4 selector) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) { + return _ContractPermissionController.Contract.CanCall(&_ContractPermissionController.CallOpts, account, caller, target, selector) +} + +// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210. +// +// Solidity: function getAdmins(address account) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerCaller) GetAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "getAdmins", account) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210. +// +// Solidity: function getAdmins(address account) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerSession) GetAdmins(account common.Address) ([]common.Address, error) { + return _ContractPermissionController.Contract.GetAdmins(&_ContractPermissionController.CallOpts, account) +} + +// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210. +// +// Solidity: function getAdmins(address account) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) GetAdmins(account common.Address) ([]common.Address, error) { + return _ContractPermissionController.Contract.GetAdmins(&_ContractPermissionController.CallOpts, account) +} + +// GetAppointeePermissions is a free data retrieval call binding the contract method 0x882a3b38. +// +// Solidity: function getAppointeePermissions(address account, address appointee) view returns(address[], bytes4[]) +func (_ContractPermissionController *ContractPermissionControllerCaller) GetAppointeePermissions(opts *bind.CallOpts, account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "getAppointeePermissions", account, appointee) + + if err != nil { + return *new([]common.Address), *new([][4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([][4]byte)).(*[][4]byte) + + return out0, out1, err + +} + +// GetAppointeePermissions is a free data retrieval call binding the contract method 0x882a3b38. +// +// Solidity: function getAppointeePermissions(address account, address appointee) view returns(address[], bytes4[]) +func (_ContractPermissionController *ContractPermissionControllerSession) GetAppointeePermissions(account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) { + return _ContractPermissionController.Contract.GetAppointeePermissions(&_ContractPermissionController.CallOpts, account, appointee) +} + +// GetAppointeePermissions is a free data retrieval call binding the contract method 0x882a3b38. +// +// Solidity: function getAppointeePermissions(address account, address appointee) view returns(address[], bytes4[]) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) GetAppointeePermissions(account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) { + return _ContractPermissionController.Contract.GetAppointeePermissions(&_ContractPermissionController.CallOpts, account, appointee) +} + +// GetAppointees is a free data retrieval call binding the contract method 0xfddbdefd. +// +// Solidity: function getAppointees(address account, address target, bytes4 selector) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerCaller) GetAppointees(opts *bind.CallOpts, account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "getAppointees", account, target, selector) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetAppointees is a free data retrieval call binding the contract method 0xfddbdefd. +// +// Solidity: function getAppointees(address account, address target, bytes4 selector) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) { + return _ContractPermissionController.Contract.GetAppointees(&_ContractPermissionController.CallOpts, account, target, selector) +} + +// GetAppointees is a free data retrieval call binding the contract method 0xfddbdefd. +// +// Solidity: function getAppointees(address account, address target, bytes4 selector) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) { + return _ContractPermissionController.Contract.GetAppointees(&_ContractPermissionController.CallOpts, account, target, selector) +} + +// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f. +// +// Solidity: function getPendingAdmins(address account) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerCaller) GetPendingAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "getPendingAdmins", account) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f. +// +// Solidity: function getPendingAdmins(address account) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) { + return _ContractPermissionController.Contract.GetPendingAdmins(&_ContractPermissionController.CallOpts, account) +} + +// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f. +// +// Solidity: function getPendingAdmins(address account) view returns(address[]) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) { + return _ContractPermissionController.Contract.GetPendingAdmins(&_ContractPermissionController.CallOpts, account) +} + +// IsAdmin is a free data retrieval call binding the contract method 0x91006745. +// +// Solidity: function isAdmin(address account, address caller) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerCaller) IsAdmin(opts *bind.CallOpts, account common.Address, caller common.Address) (bool, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "isAdmin", account, caller) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsAdmin is a free data retrieval call binding the contract method 0x91006745. +// +// Solidity: function isAdmin(address account, address caller) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) { + return _ContractPermissionController.Contract.IsAdmin(&_ContractPermissionController.CallOpts, account, caller) +} + +// IsAdmin is a free data retrieval call binding the contract method 0x91006745. +// +// Solidity: function isAdmin(address account, address caller) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) { + return _ContractPermissionController.Contract.IsAdmin(&_ContractPermissionController.CallOpts, account, caller) +} + +// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77. +// +// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerCaller) IsPendingAdmin(opts *bind.CallOpts, account common.Address, pendingAdmin common.Address) (bool, error) { + var out []interface{} + err := _ContractPermissionController.contract.Call(opts, &out, "isPendingAdmin", account, pendingAdmin) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77. +// +// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) { + return _ContractPermissionController.Contract.IsPendingAdmin(&_ContractPermissionController.CallOpts, account, pendingAdmin) +} + +// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77. +// +// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool) +func (_ContractPermissionController *ContractPermissionControllerCallerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) { + return _ContractPermissionController.Contract.IsPendingAdmin(&_ContractPermissionController.CallOpts, account, pendingAdmin) +} + +// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef. +// +// Solidity: function acceptAdmin(address account) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) AcceptAdmin(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "acceptAdmin", account) +} + +// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef. +// +// Solidity: function acceptAdmin(address account) returns() +func (_ContractPermissionController *ContractPermissionControllerSession) AcceptAdmin(account common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.AcceptAdmin(&_ContractPermissionController.TransactOpts, account) +} + +// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef. +// +// Solidity: function acceptAdmin(address account) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) AcceptAdmin(account common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.AcceptAdmin(&_ContractPermissionController.TransactOpts, account) +} + +// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87. +// +// Solidity: function addPendingAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) AddPendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "addPendingAdmin", account, admin) +} + +// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87. +// +// Solidity: function addPendingAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.AddPendingAdmin(&_ContractPermissionController.TransactOpts, account, admin) +} + +// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87. +// +// Solidity: function addPendingAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.AddPendingAdmin(&_ContractPermissionController.TransactOpts, account, admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "initialize") +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_ContractPermissionController *ContractPermissionControllerSession) Initialize() (*types.Transaction, error) { + return _ContractPermissionController.Contract.Initialize(&_ContractPermissionController.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) Initialize() (*types.Transaction, error) { + return _ContractPermissionController.Contract.Initialize(&_ContractPermissionController.TransactOpts) +} + +// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5. +// +// Solidity: function removeAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) RemoveAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "removeAdmin", account, admin) +} + +// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5. +// +// Solidity: function removeAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.RemoveAdmin(&_ContractPermissionController.TransactOpts, account, admin) +} + +// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5. +// +// Solidity: function removeAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.RemoveAdmin(&_ContractPermissionController.TransactOpts, account, admin) +} + +// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201. +// +// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) RemoveAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "removeAppointee", account, appointee, target, selector) +} + +// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201. +// +// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns() +func (_ContractPermissionController *ContractPermissionControllerSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) { + return _ContractPermissionController.Contract.RemoveAppointee(&_ContractPermissionController.TransactOpts, account, appointee, target, selector) +} + +// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201. +// +// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) { + return _ContractPermissionController.Contract.RemoveAppointee(&_ContractPermissionController.TransactOpts, account, appointee, target, selector) +} + +// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9. +// +// Solidity: function removePendingAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) RemovePendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "removePendingAdmin", account, admin) +} + +// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9. +// +// Solidity: function removePendingAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.RemovePendingAdmin(&_ContractPermissionController.TransactOpts, account, admin) +} + +// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9. +// +// Solidity: function removePendingAdmin(address account, address admin) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) { + return _ContractPermissionController.Contract.RemovePendingAdmin(&_ContractPermissionController.TransactOpts, account, admin) +} + +// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e. +// +// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactor) SetAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) { + return _ContractPermissionController.contract.Transact(opts, "setAppointee", account, appointee, target, selector) +} + +// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e. +// +// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns() +func (_ContractPermissionController *ContractPermissionControllerSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) { + return _ContractPermissionController.Contract.SetAppointee(&_ContractPermissionController.TransactOpts, account, appointee, target, selector) +} + +// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e. +// +// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns() +func (_ContractPermissionController *ContractPermissionControllerTransactorSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) { + return _ContractPermissionController.Contract.SetAppointee(&_ContractPermissionController.TransactOpts, account, appointee, target, selector) +} + +// ContractPermissionControllerAdminRemovedIterator is returned from FilterAdminRemoved and is used to iterate over the raw logs and unpacked data for AdminRemoved events raised by the ContractPermissionController contract. +type ContractPermissionControllerAdminRemovedIterator struct { + Event *ContractPermissionControllerAdminRemoved // 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 *ContractPermissionControllerAdminRemovedIterator) 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(ContractPermissionControllerAdminRemoved) + 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(ContractPermissionControllerAdminRemoved) + 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 *ContractPermissionControllerAdminRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerAdminRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerAdminRemoved represents a AdminRemoved event raised by the ContractPermissionController contract. +type ContractPermissionControllerAdminRemoved struct { + Account common.Address + Admin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminRemoved is a free log retrieval operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce. +// +// Solidity: event AdminRemoved(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) FilterAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerAdminRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "AdminRemoved", accountRule) + if err != nil { + return nil, err + } + return &ContractPermissionControllerAdminRemovedIterator{contract: _ContractPermissionController.contract, event: "AdminRemoved", logs: logs, sub: sub}, nil +} + +// WatchAdminRemoved is a free log subscription operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce. +// +// Solidity: event AdminRemoved(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) WatchAdminRemoved(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAdminRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.WatchLogs(opts, "AdminRemoved", 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(ContractPermissionControllerAdminRemoved) + if err := _ContractPermissionController.contract.UnpackLog(event, "AdminRemoved", 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 +} + +// ParseAdminRemoved is a log parse operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce. +// +// Solidity: event AdminRemoved(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) ParseAdminRemoved(log types.Log) (*ContractPermissionControllerAdminRemoved, error) { + event := new(ContractPermissionControllerAdminRemoved) + if err := _ContractPermissionController.contract.UnpackLog(event, "AdminRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractPermissionControllerAdminSetIterator is returned from FilterAdminSet and is used to iterate over the raw logs and unpacked data for AdminSet events raised by the ContractPermissionController contract. +type ContractPermissionControllerAdminSetIterator struct { + Event *ContractPermissionControllerAdminSet // 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 *ContractPermissionControllerAdminSetIterator) 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(ContractPermissionControllerAdminSet) + 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(ContractPermissionControllerAdminSet) + 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 *ContractPermissionControllerAdminSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerAdminSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerAdminSet represents a AdminSet event raised by the ContractPermissionController contract. +type ContractPermissionControllerAdminSet struct { + Account common.Address + Admin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminSet is a free log retrieval operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97. +// +// Solidity: event AdminSet(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) FilterAdminSet(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerAdminSetIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "AdminSet", accountRule) + if err != nil { + return nil, err + } + return &ContractPermissionControllerAdminSetIterator{contract: _ContractPermissionController.contract, event: "AdminSet", logs: logs, sub: sub}, nil +} + +// WatchAdminSet is a free log subscription operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97. +// +// Solidity: event AdminSet(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) WatchAdminSet(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAdminSet, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.WatchLogs(opts, "AdminSet", 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(ContractPermissionControllerAdminSet) + if err := _ContractPermissionController.contract.UnpackLog(event, "AdminSet", 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 +} + +// ParseAdminSet is a log parse operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97. +// +// Solidity: event AdminSet(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) ParseAdminSet(log types.Log) (*ContractPermissionControllerAdminSet, error) { + event := new(ContractPermissionControllerAdminSet) + if err := _ContractPermissionController.contract.UnpackLog(event, "AdminSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractPermissionControllerAppointeeRemovedIterator is returned from FilterAppointeeRemoved and is used to iterate over the raw logs and unpacked data for AppointeeRemoved events raised by the ContractPermissionController contract. +type ContractPermissionControllerAppointeeRemovedIterator struct { + Event *ContractPermissionControllerAppointeeRemoved // 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 *ContractPermissionControllerAppointeeRemovedIterator) 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(ContractPermissionControllerAppointeeRemoved) + 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(ContractPermissionControllerAppointeeRemoved) + 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 *ContractPermissionControllerAppointeeRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerAppointeeRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerAppointeeRemoved represents a AppointeeRemoved event raised by the ContractPermissionController contract. +type ContractPermissionControllerAppointeeRemoved struct { + Account common.Address + Appointee common.Address + Target common.Address + Selector [4]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAppointeeRemoved is a free log retrieval operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6. +// +// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector) +func (_ContractPermissionController *ContractPermissionControllerFilterer) FilterAppointeeRemoved(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*ContractPermissionControllerAppointeeRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var appointeeRule []interface{} + for _, appointeeItem := range appointee { + appointeeRule = append(appointeeRule, appointeeItem) + } + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "AppointeeRemoved", accountRule, appointeeRule) + if err != nil { + return nil, err + } + return &ContractPermissionControllerAppointeeRemovedIterator{contract: _ContractPermissionController.contract, event: "AppointeeRemoved", logs: logs, sub: sub}, nil +} + +// WatchAppointeeRemoved is a free log subscription operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6. +// +// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector) +func (_ContractPermissionController *ContractPermissionControllerFilterer) WatchAppointeeRemoved(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAppointeeRemoved, account []common.Address, appointee []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var appointeeRule []interface{} + for _, appointeeItem := range appointee { + appointeeRule = append(appointeeRule, appointeeItem) + } + + logs, sub, err := _ContractPermissionController.contract.WatchLogs(opts, "AppointeeRemoved", accountRule, appointeeRule) + 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(ContractPermissionControllerAppointeeRemoved) + if err := _ContractPermissionController.contract.UnpackLog(event, "AppointeeRemoved", 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 +} + +// ParseAppointeeRemoved is a log parse operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6. +// +// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector) +func (_ContractPermissionController *ContractPermissionControllerFilterer) ParseAppointeeRemoved(log types.Log) (*ContractPermissionControllerAppointeeRemoved, error) { + event := new(ContractPermissionControllerAppointeeRemoved) + if err := _ContractPermissionController.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractPermissionControllerAppointeeSetIterator is returned from FilterAppointeeSet and is used to iterate over the raw logs and unpacked data for AppointeeSet events raised by the ContractPermissionController contract. +type ContractPermissionControllerAppointeeSetIterator struct { + Event *ContractPermissionControllerAppointeeSet // 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 *ContractPermissionControllerAppointeeSetIterator) 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(ContractPermissionControllerAppointeeSet) + 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(ContractPermissionControllerAppointeeSet) + 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 *ContractPermissionControllerAppointeeSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerAppointeeSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerAppointeeSet represents a AppointeeSet event raised by the ContractPermissionController contract. +type ContractPermissionControllerAppointeeSet struct { + Account common.Address + Appointee common.Address + Target common.Address + Selector [4]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAppointeeSet is a free log retrieval operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169. +// +// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector) +func (_ContractPermissionController *ContractPermissionControllerFilterer) FilterAppointeeSet(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*ContractPermissionControllerAppointeeSetIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var appointeeRule []interface{} + for _, appointeeItem := range appointee { + appointeeRule = append(appointeeRule, appointeeItem) + } + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "AppointeeSet", accountRule, appointeeRule) + if err != nil { + return nil, err + } + return &ContractPermissionControllerAppointeeSetIterator{contract: _ContractPermissionController.contract, event: "AppointeeSet", logs: logs, sub: sub}, nil +} + +// WatchAppointeeSet is a free log subscription operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169. +// +// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector) +func (_ContractPermissionController *ContractPermissionControllerFilterer) WatchAppointeeSet(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerAppointeeSet, account []common.Address, appointee []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var appointeeRule []interface{} + for _, appointeeItem := range appointee { + appointeeRule = append(appointeeRule, appointeeItem) + } + + logs, sub, err := _ContractPermissionController.contract.WatchLogs(opts, "AppointeeSet", accountRule, appointeeRule) + 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(ContractPermissionControllerAppointeeSet) + if err := _ContractPermissionController.contract.UnpackLog(event, "AppointeeSet", 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 +} + +// ParseAppointeeSet is a log parse operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169. +// +// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector) +func (_ContractPermissionController *ContractPermissionControllerFilterer) ParseAppointeeSet(log types.Log) (*ContractPermissionControllerAppointeeSet, error) { + event := new(ContractPermissionControllerAppointeeSet) + if err := _ContractPermissionController.contract.UnpackLog(event, "AppointeeSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractPermissionControllerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractPermissionController contract. +type ContractPermissionControllerInitializedIterator struct { + Event *ContractPermissionControllerInitialized // 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 *ContractPermissionControllerInitializedIterator) 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(ContractPermissionControllerInitialized) + 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(ContractPermissionControllerInitialized) + 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 *ContractPermissionControllerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerInitialized represents a Initialized event raised by the ContractPermissionController contract. +type ContractPermissionControllerInitialized 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 (_ContractPermissionController *ContractPermissionControllerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractPermissionControllerInitializedIterator, error) { + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContractPermissionControllerInitializedIterator{contract: _ContractPermissionController.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 (_ContractPermissionController *ContractPermissionControllerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerInitialized) (event.Subscription, error) { + + logs, sub, err := _ContractPermissionController.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(ContractPermissionControllerInitialized) + if err := _ContractPermissionController.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 (_ContractPermissionController *ContractPermissionControllerFilterer) ParseInitialized(log types.Log) (*ContractPermissionControllerInitialized, error) { + event := new(ContractPermissionControllerInitialized) + if err := _ContractPermissionController.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractPermissionControllerPendingAdminAddedIterator is returned from FilterPendingAdminAdded and is used to iterate over the raw logs and unpacked data for PendingAdminAdded events raised by the ContractPermissionController contract. +type ContractPermissionControllerPendingAdminAddedIterator struct { + Event *ContractPermissionControllerPendingAdminAdded // 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 *ContractPermissionControllerPendingAdminAddedIterator) 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(ContractPermissionControllerPendingAdminAdded) + 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(ContractPermissionControllerPendingAdminAdded) + 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 *ContractPermissionControllerPendingAdminAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerPendingAdminAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerPendingAdminAdded represents a PendingAdminAdded event raised by the ContractPermissionController contract. +type ContractPermissionControllerPendingAdminAdded struct { + Account common.Address + Admin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPendingAdminAdded is a free log retrieval operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c. +// +// Solidity: event PendingAdminAdded(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) FilterPendingAdminAdded(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerPendingAdminAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "PendingAdminAdded", accountRule) + if err != nil { + return nil, err + } + return &ContractPermissionControllerPendingAdminAddedIterator{contract: _ContractPermissionController.contract, event: "PendingAdminAdded", logs: logs, sub: sub}, nil +} + +// WatchPendingAdminAdded is a free log subscription operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c. +// +// Solidity: event PendingAdminAdded(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) WatchPendingAdminAdded(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerPendingAdminAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.WatchLogs(opts, "PendingAdminAdded", 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(ContractPermissionControllerPendingAdminAdded) + if err := _ContractPermissionController.contract.UnpackLog(event, "PendingAdminAdded", 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 +} + +// ParsePendingAdminAdded is a log parse operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c. +// +// Solidity: event PendingAdminAdded(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) ParsePendingAdminAdded(log types.Log) (*ContractPermissionControllerPendingAdminAdded, error) { + event := new(ContractPermissionControllerPendingAdminAdded) + if err := _ContractPermissionController.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractPermissionControllerPendingAdminRemovedIterator is returned from FilterPendingAdminRemoved and is used to iterate over the raw logs and unpacked data for PendingAdminRemoved events raised by the ContractPermissionController contract. +type ContractPermissionControllerPendingAdminRemovedIterator struct { + Event *ContractPermissionControllerPendingAdminRemoved // 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 *ContractPermissionControllerPendingAdminRemovedIterator) 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(ContractPermissionControllerPendingAdminRemoved) + 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(ContractPermissionControllerPendingAdminRemoved) + 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 *ContractPermissionControllerPendingAdminRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractPermissionControllerPendingAdminRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractPermissionControllerPendingAdminRemoved represents a PendingAdminRemoved event raised by the ContractPermissionController contract. +type ContractPermissionControllerPendingAdminRemoved struct { + Account common.Address + Admin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPendingAdminRemoved is a free log retrieval operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7. +// +// Solidity: event PendingAdminRemoved(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) FilterPendingAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*ContractPermissionControllerPendingAdminRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.FilterLogs(opts, "PendingAdminRemoved", accountRule) + if err != nil { + return nil, err + } + return &ContractPermissionControllerPendingAdminRemovedIterator{contract: _ContractPermissionController.contract, event: "PendingAdminRemoved", logs: logs, sub: sub}, nil +} + +// WatchPendingAdminRemoved is a free log subscription operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7. +// +// Solidity: event PendingAdminRemoved(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) WatchPendingAdminRemoved(opts *bind.WatchOpts, sink chan<- *ContractPermissionControllerPendingAdminRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ContractPermissionController.contract.WatchLogs(opts, "PendingAdminRemoved", 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(ContractPermissionControllerPendingAdminRemoved) + if err := _ContractPermissionController.contract.UnpackLog(event, "PendingAdminRemoved", 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 +} + +// ParsePendingAdminRemoved is a log parse operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7. +// +// Solidity: event PendingAdminRemoved(address indexed account, address admin) +func (_ContractPermissionController *ContractPermissionControllerFilterer) ParsePendingAdminRemoved(log types.Log) (*ContractPermissionControllerPendingAdminRemoved, error) { + event := new(ContractPermissionControllerPendingAdminRemoved) + if err := _ContractPermissionController.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/StrategyManager/binding.go b/contracts/bindings/StrategyManager/binding.go index 293cbb3f..37e09591 100644 --- a/contracts/bindings/StrategyManager/binding.go +++ b/contracts/bindings/StrategyManager/binding.go @@ -31,8 +31,8 @@ var ( // ContractStrategyManagerMetaData contains all meta data concerning the ContractStrategyManager contract. var ContractStrategyManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateStrategyDepositDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"depositedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategyWithSignature\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"depositedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"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\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"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},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]}]", - Bin: "0x61010060405234801561001157600080fd5b506040516126fa3803806126fa8339810160408190526100309161020a565b81816001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610077610089565b60e052610082610133565b5050610244565b600060c051461461012c5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b5060e05190565b600054610100900460ff161561019f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101f0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461020757600080fd5b50565b6000806040838503121561021d57600080fd5b8251610228816101f2565b6020840151909250610239816101f2565b809150509250929050565b60805160a05160c05160e05161244c6102ae60003960006117e401526000611724015260008181610461015281816106fd01528181610a6501528181610e1301526113cf01526000818161032001528181610504015281816108670152611007015261244c6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063cbc2bd62116100a2578063f2fde38b11610071578063f2fde38b14610496578063f698da25146104a9578063fabc1cbc146104b1578063fe243a17146104c457600080fd5b8063cbc2bd6214610429578063de44acb61461043c578063df5cf7231461045c578063e7a050aa1461048357600080fd5b80639ac01d61116100de5780639ac01d61146103c8578063b5d8b5b8146103db578063c4623ea1146103ee578063c66567021461041657600080fd5b80638da5cb5b1461038357806394f649dd14610394578063967fc0d2146103b557600080fd5b80635c975abb1161017c578063724af4231161014b578063724af423146102e85780637ecebe00146102fb578063886f11951461031b5780638b8aac3c1461035a57600080fd5b80635c975abb146102a25780635de08ff2146102aa578063663c1de4146102bd578063715018a6146102e057600080fd5b806332e89ace116101b857806332e89ace1461021a57806348825e9414610240578063595c6a67146102675780635ac86ab71461026f57600080fd5b8063136439dd146101df5780631794bb3c146101f45780632eae418c14610207575b600080fd5b6101f26101ed366004611e96565b6104ef565b005b6101f2610202366004611ec4565b6105c6565b6101f2610215366004611f05565b6106f2565b61022d610228366004611f6c565b6107ab565b6040519081526020015b60405180910390f35b61022d7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b6101f2610852565b61029261027d36600461206f565b609854600160ff9092169190911b9081161490565b6040519015158152602001610237565b60985461022d565b6101f26102b8366004612092565b610904565b6102926102cb366004612109565b60d16020526000908152604090205460ff1681565b6101f2610a48565b6101f26102f6366004611ec4565b610a5a565b61022d610309366004612109565b60ca6020526000908152604090205481565b6103427f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610237565b61022d610368366004612109565b6001600160a01b0316600090815260ce602052604090205490565b6033546001600160a01b0316610342565b6103a76103a2366004612109565b610aae565b60405161023792919061216b565b60cb54610342906001600160a01b031681565b61022d6103d63660046121c5565b610c2e565b6101f26103e9366004612092565b610cc0565b6104016103fc366004611f05565b610e05565b60408051928352602083019190915201610237565b6101f2610424366004612109565b610e6b565b61034261043736600461222a565b610e7f565b61044f61044a366004612109565b610eb7565b6040516102379190612256565b6103427f000000000000000000000000000000000000000000000000000000000000000081565b61022d610491366004611ec4565b610f2d565b6101f26104a4366004612109565b610f80565b61022d610ff6565b6101f26104bf366004611e96565b611005565b61022d6104d2366004612269565b60cd60209081526000928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057791906122a2565b61059457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146105b95760405163c61dca5d60e01b815260040160405180910390fd5b6105c28261111d565b5050565b600054610100900460ff16158080156105e65750600054600160ff909116105b806106005750303b158015610600575060005460ff166001145b6106685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561068b576000805461ff0019166101001790555b6106948261111d565b61069d8461115a565b6106a6836111ac565b80156106ec576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461073b5760405163f739589b60e01b815260040160405180910390fd5b604051636ce5768960e11b81526001600160a01b03858116600483015283811660248301526044820183905284169063d9caed1290606401600060405180830381600087803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b5050505050505050565b60985460009081906001908116036107d65760405163840a48d560e01b815260040160405180910390fd5b6107de611215565b6001600160a01b038516600090815260ca602052604090205461081086610809818c8c8c878c610c2e565b868861126e565b6001600160a01b038616600090815260ca6020526040902060018201905561083a868a8a8a6112c0565b9250506108476001606555565b509695505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108da91906122a2565b6108f757604051631d77d47760e21b815260040160405180910390fd5b61090260001961111d565b565b60cb546001600160a01b0316331461092f576040516320ba3ff960e21b815260040160405180910390fd5b8060005b818110156106ec5760d16000858584818110610951576109516122c4565b90506020020160208101906109669190612109565b6001600160a01b0316815260208101919091526040016000205460ff16610a4057600160d1600086868581811061099f5761099f6122c4565b90506020020160208101906109b49190612109565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610a0f57610a0f6122c4565b9050602002016020810190610a249190612109565b6040516001600160a01b03909116815260200160405180910390a15b600101610933565b610a50611438565b610902600061115a565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa35760405163f739589b60e01b815260040160405180910390fd5b6106ec838383611492565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610ae657610ae6611f56565b604051908082528060200260200182016040528015610b0f578160200160208202803683370190505b50905060005b82811015610ba0576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610b5457610b546122c4565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610b8d57610b8d6122c4565b6020908102919091010152600101610b15565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610c1c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bfe575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e08101829052600090610cb590610100016040516020818303038152906040528051906020012061155b565b979650505050505050565b60cb546001600160a01b03163314610ceb576040516320ba3ff960e21b815260040160405180910390fd5b8060005b818110156106ec5760d16000858584818110610d0d57610d0d6122c4565b9050602002016020810190610d229190612109565b6001600160a01b0316815260208101919091526040016000205460ff1615610dfd57600060d16000868685818110610d5c57610d5c6122c4565b9050602002016020810190610d719190612109565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610dcc57610dcc6122c4565b9050602002016020810190610de19190612109565b6040516001600160a01b03909116815260200160405180910390a15b600101610cef565b600080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e515760405163f739589b60e01b815260040160405180910390fd5b610e5d868587866115a2565b915091505b94509492505050565b610e73611438565b610e7c816111ac565b50565b60ce6020528160005260406000208181548110610e9b57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6001600160a01b038116600090815260ce6020908152604091829020805483518184028101840190945280845260609392830182828015610f2157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f03575b50505050509050919050565b6098546000908190600190811603610f585760405163840a48d560e01b815260040160405180910390fd5b610f60611215565b610f6c338686866112c0565b9150610f786001606555565b509392505050565b610f88611438565b6001600160a01b038116610fed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065f565b610e7c8161115a565b6000611000611720565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611063573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108791906122da565b6001600160a01b0316336001600160a01b0316146110b85760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146110df5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036112675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161065f565b6002606555565b4281101561128f57604051630819bdcd60e01b815260040160405180910390fd5b6112a36001600160a01b0385168484611806565b6106ec57604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260d16020526040812054849060ff166112fb57604051632efd965160e11b815260040160405180910390fd5b6113106001600160a01b038516338786611867565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af115801561135f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138391906122f7565b9150600080611394888789876115a2565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf290608401600060405180830381600087803b15801561141557600080fd5b505af1158015611429573d6000803e3d6000fd5b50505050505050949350505050565b6033546001600160a01b031633146109025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065f565b6000816000036114b5576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808516600090815260cd6020908152604080832093871683529290522054808311156114fc57604051634b18b19360e01b815260040160405180910390fd5b6115068382612326565b6001600160a01b03808716600090815260cd60209081526040808320938916835292905290812082905590915081900361154e5761154485856118c1565b6001915050611554565b60009150505b9392505050565b6000611565611720565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6000806001600160a01b0386166115cc576040516316f2ccc960e01b815260040160405180910390fd5b826000036115ed576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808716600090815260cd6020908152604080832093881683529290529081205490819003611696576001600160a01b038716600090815260ce602090815260409091205410611657576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b03878116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b6116a0848261233f565b6001600160a01b03888116600081815260cd602090815260408083208b861680855290835292819020959095558451928352928a169282019290925291820152606081018590527f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969060800160405180910390a196929550919350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146117e15750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60008060006118158585611a4a565b9092509050600081600481111561182e5761182e612352565b14801561184c5750856001600160a01b0316826001600160a01b0316145b8061185d575061185d868686611a8f565b9695505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526106ec908590611b7b565b6001600160a01b038216600090815260ce6020526040812054905b818110156119db576001600160a01b03848116600090815260ce6020526040902080549185169183908110611913576119136122c4565b6000918252602090912001546001600160a01b0316036119d3576001600160a01b038416600090815260ce60205260409020805461195390600190612326565b81548110611963576119636122c4565b60009182526020808320909101546001600160a01b03878116845260ce90925260409092208054919092169190839081106119a0576119a06122c4565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506119db565b6001016118dc565b8181036119fb57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b038416600090815260ce60205260409020805480611a2257611a22612368565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604103611a805760208301516040840151606085015160001a611a7487828585611c55565b94509450505050611a88565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401611ab99291906123ce565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611af791906123e7565b600060405180830381855afa9150503d8060008114611b32576040519150601f19603f3d011682016040523d82523d6000602084013e611b37565b606091505b5091509150818015611b4b57506020815110155b801561185d57508051630b135d3f60e11b90611b7090830160209081019084016122f7565b149695505050505050565b6000611bd0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611d169092919063ffffffff16565b9050805160001480611bf1575080806020019051810190611bf191906122a2565b611c505760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161065f565b505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c8c5750600090506003610e62565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611ce0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611d0957600060019250925050610e62565b9660009650945050505050565b6060611d258484600085611d2d565b949350505050565b606082471015611d8e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161065f565b600080866001600160a01b03168587604051611daa91906123e7565b60006040518083038185875af1925050503d8060008114611de7576040519150601f19603f3d011682016040523d82523d6000602084013e611dec565b606091505b5091509150610cb58783838760608315611e67578251600003611e60576001600160a01b0385163b611e605760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065f565b5081611d25565b611d258383815115611e7c5781518083602001fd5b8060405162461bcd60e51b815260040161065f9190612403565b600060208284031215611ea857600080fd5b5035919050565b6001600160a01b0381168114610e7c57600080fd5b600080600060608486031215611ed957600080fd5b8335611ee481611eaf565b92506020840135611ef481611eaf565b929592945050506040919091013590565b60008060008060808587031215611f1b57600080fd5b8435611f2681611eaf565b93506020850135611f3681611eaf565b92506040850135611f4681611eaf565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215611f8557600080fd5b8635611f9081611eaf565b95506020870135611fa081611eaf565b9450604087013593506060870135611fb781611eaf565b92506080870135915060a087013567ffffffffffffffff811115611fda57600080fd5b8701601f81018913611feb57600080fd5b803567ffffffffffffffff81111561200557612005611f56565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561203457612034611f56565b6040528181528282016020018b101561204c57600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b60006020828403121561208157600080fd5b813560ff8116811461155457600080fd5b600080602083850312156120a557600080fd5b823567ffffffffffffffff8111156120bc57600080fd5b8301601f810185136120cd57600080fd5b803567ffffffffffffffff8111156120e457600080fd5b8560208260051b84010111156120f957600080fd5b6020919091019590945092505050565b60006020828403121561211b57600080fd5b813561155481611eaf565b600081518084526020840193506020830160005b828110156121615781516001600160a01b031686526020958601959091019060010161213a565b5093949350505050565b60408152600061217e6040830185612126565b828103602084015280845180835260208301915060208601925060005b818110156121b957835183526020938401939092019160010161219b565b50909695505050505050565b60008060008060008060c087890312156121de57600080fd5b86356121e981611eaf565b955060208701356121f981611eaf565b9450604087013561220981611eaf565b959894975094956060810135955060808101359460a0909101359350915050565b6000806040838503121561223d57600080fd5b823561224881611eaf565b946020939093013593505050565b6020815260006115546020830184612126565b6000806040838503121561227c57600080fd5b823561228781611eaf565b9150602083013561229781611eaf565b809150509250929050565b6000602082840312156122b457600080fd5b8151801515811461155457600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122ec57600080fd5b815161155481611eaf565b60006020828403121561230957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561233957612339612310565b92915050565b8082018082111561233957612339612310565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60005b83811015612399578181015183820152602001612381565b50506000910152565b600081518084526123ba81602086016020860161237e565b601f01601f19169290920160200192915050565b828152604060208201526000611d2560408301846123a2565b600082516123f981846020870161237e565b9190910192915050565b60208152600061155460208301846123a256fea2646970667358221220beafd05d74355d3f422c307870f70963ada2f2b92377a9364aed71fc0ecd000264736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"sharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateStrategyDepositDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"depositedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategyWithSignature\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"depositedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"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\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"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},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]}]", + Bin: "0x61010060405234801561001157600080fd5b5060405161285b38038061285b8339810160408190526100309161020a565b81816001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610077610089565b60e052610082610133565b5050610244565b600060c051461461012c5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b5060e05190565b600054610100900460ff161561019f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101f0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461020757600080fd5b50565b6000806040838503121561021d57600080fd5b8251610228816101f2565b6020840151909250610239816101f2565b809150509250929050565b60805160a05160c05160e0516125a66102b5600039600061193e0152600061187e0152600081816104770152818161073001528181610a9801528181610e4601528181610fbe0152611529015260008181610336015281816105370152818161089a015261116101526125a66000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806394f649dd1161010f578063df5cf723116100a2578063f3b4a00011610071578063f3b4a000146104d2578063f698da25146104dc578063fabc1cbc146104e4578063fe243a17146104f757600080fd5b8063df5cf72314610472578063e7a050aa14610499578063ee7a7c04146104ac578063f2fde38b146104bf57600080fd5b8063c4623ea1116100de578063c4623ea114610404578063c66567021461042c578063cbc2bd621461043f578063de44acb61461045257600080fd5b806394f649dd146103aa578063967fc0d2146103cb5780639ac01d61146103de578063b5d8b5b8146103f157600080fd5b80635de08ff2116101875780637ecebe00116101565780637ecebe0014610311578063886f1195146103315780638b8aac3c146103705780638da5cb5b1461039957600080fd5b80635de08ff2146102c0578063663c1de4146102d3578063715018a6146102f6578063724af423146102fe57600080fd5b806348825e94116101c357806348825e9414610256578063595c6a671461027d5780635ac86ab7146102855780635c975abb146102b857600080fd5b8063136439dd146101f55780631794bb3c1461020a5780632eae418c1461021d57806332e89ace14610230575b600080fd5b610208610203366004611ff0565b610522565b005b61020861021836600461201e565b6105f9565b61020861022b36600461205f565b610725565b61024361023e3660046120c6565b6107de565b6040519081526020015b60405180910390f35b6102437f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b610208610885565b6102a86102933660046121c9565b609854600160ff9092169190911b9081161490565b604051901515815260200161024d565b609854610243565b6102086102ce3660046121ec565b610937565b6102a86102e1366004612263565b60d16020526000908152604090205460ff1681565b610208610a7b565b61020861030c36600461201e565b610a8d565b61024361031f366004612263565b60ca6020526000908152604090205481565b6103587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024d565b61024361037e366004612263565b6001600160a01b0316600090815260ce602052604090205490565b6033546001600160a01b0316610358565b6103bd6103b8366004612263565b610ae1565b60405161024d9291906122c5565b60cb54610358906001600160a01b031681565b6102436103ec36600461231f565b610c61565b6102086103ff3660046121ec565b610cf3565b61041761041236600461205f565b610e38565b6040805192835260208301919091520161024d565b61020861043a366004612263565b610e9e565b61035861044d366004612384565b610eb2565b610465610460366004612263565b610eea565b60405161024d91906123b0565b6103587f000000000000000000000000000000000000000000000000000000000000000081565b6102436104a736600461201e565b610f60565b6102086104ba366004612384565b610fb3565b6102086104cd366004612263565b6110da565b610358620e16e481565b610243611150565b6102086104f2366004611ff0565b61115f565b6102436105053660046123c3565b60cd60209081526000928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105aa91906123fc565b6105c757604051631d77d47760e21b815260040160405180910390fd5b60985481811681146105ec5760405163c61dca5d60e01b815260040160405180910390fd5b6105f582611277565b5050565b600054610100900460ff16158080156106195750600054600160ff909116105b806106335750303b158015610633575060005460ff166001145b61069b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156106be576000805461ff0019166101001790555b6106c782611277565b6106d0846112b4565b6106d983611306565b801561071f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461076e5760405163f739589b60e01b815260040160405180910390fd5b604051636ce5768960e11b81526001600160a01b03858116600483015283811660248301526044820183905284169063d9caed1290606401600060405180830381600087803b1580156107c057600080fd5b505af11580156107d4573d6000803e3d6000fd5b5050505050505050565b60985460009081906001908116036108095760405163840a48d560e01b815260040160405180910390fd5b61081161136f565b6001600160a01b038516600090815260ca60205260409020546108438661083c818c8c8c878c610c61565b86886113c8565b6001600160a01b038616600090815260ca6020526040902060018201905561086d868a8a8a61141a565b92505061087a6001606555565b509695505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906123fc565b61092a57604051631d77d47760e21b815260040160405180910390fd5b610935600019611277565b565b60cb546001600160a01b03163314610962576040516320ba3ff960e21b815260040160405180910390fd5b8060005b8181101561071f5760d160008585848181106109845761098461241e565b90506020020160208101906109999190612263565b6001600160a01b0316815260208101919091526040016000205460ff16610a7357600160d160008686858181106109d2576109d261241e565b90506020020160208101906109e79190612263565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610a4257610a4261241e565b9050602002016020810190610a579190612263565b6040516001600160a01b03909116815260200160405180910390a15b600101610966565b610a83611592565b61093560006112b4565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ad65760405163f739589b60e01b815260040160405180910390fd5b61071f8383836115ec565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610b1957610b196120b0565b604051908082528060200260200182016040528015610b42578160200160208202803683370190505b50905060005b82811015610bd3576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610b8757610b8761241e565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610bc057610bc061241e565b6020908102919091010152600101610b48565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610c4f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c31575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e08101829052600090610ce89061010001604051602081830303815290604052805190602001206116b5565b979650505050505050565b60cb546001600160a01b03163314610d1e576040516320ba3ff960e21b815260040160405180910390fd5b8060005b8181101561071f5760d16000858584818110610d4057610d4061241e565b9050602002016020810190610d559190612263565b6001600160a01b0316815260208101919091526040016000205460ff1615610e3057600060d16000868685818110610d8f57610d8f61241e565b9050602002016020810190610da49190612263565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610dff57610dff61241e565b9050602002016020810190610e149190612263565b6040516001600160a01b03909116815260200160405180910390a15b600101610d22565b600080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e845760405163f739589b60e01b815260040160405180910390fd5b610e90868587866116fc565b915091505b94509492505050565b610ea6611592565b610eaf81611306565b50565b60ce6020528160005260406000208181548110610ece57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6001600160a01b038116600090815260ce6020908152604091829020805483518184028101840190945280845260609392830182828015610f5457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f36575b50505050509050919050565b6098546000908190600190811603610f8b5760405163840a48d560e01b815260040160405180910390fd5b610f9361136f565b610f9f3386868661141a565b9150610fab6001606555565b509392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ffc5760405163f739589b60e01b815260040160405180910390fd5b816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190612434565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b1580156110c057600080fd5b505af19250505080156110d1575060015b156105f5575050565b6110e2611592565b6001600160a01b0381166111475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610692565b610eaf816112b4565b600061115a61187a565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e19190612434565b6001600160a01b0316336001600160a01b0316146112125760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146112395760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036113c15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610692565b6002606555565b428110156113e957604051630819bdcd60e01b815260040160405180910390fd5b6113fd6001600160a01b0385168484611960565b61071f57604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260d16020526040812054849060ff1661145557604051632efd965160e11b815260040160405180910390fd5b61146a6001600160a01b0385163387866119c1565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af11580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd9190612451565b91506000806114ee888789876116fc565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf290608401600060405180830381600087803b15801561156f57600080fd5b505af1158015611583573d6000803e3d6000fd5b50505050505050949350505050565b6033546001600160a01b031633146109355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610692565b60008160000361160f576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808516600090815260cd60209081526040808320938716835292905220548083111561165657604051634b18b19360e01b815260040160405180910390fd5b6116608382612480565b6001600160a01b03808716600090815260cd6020908152604080832093891683529290529081208290559091508190036116a85761169e8585611a1b565b60019150506116ae565b60009150505b9392505050565b60006116bf61187a565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6000806001600160a01b038616611726576040516316f2ccc960e01b815260040160405180910390fd5b82600003611747576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808716600090815260cd60209081526040808320938816835292905290812054908190036117f0576001600160a01b038716600090815260ce6020908152604090912054106117b1576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b03878116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b6117fa8482612499565b6001600160a01b03888116600081815260cd602090815260408083208b861680855290835292819020959095558451928352928a169282019290925291820152606081018590527f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969060800160405180910390a196929550919350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461193b5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080600061196f8585611ba4565b90925090506000816004811115611988576119886124ac565b1480156119a65750856001600160a01b0316826001600160a01b0316145b806119b757506119b7868686611be9565b9695505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261071f908590611cd5565b6001600160a01b038216600090815260ce6020526040812054905b81811015611b35576001600160a01b03848116600090815260ce6020526040902080549185169183908110611a6d57611a6d61241e565b6000918252602090912001546001600160a01b031603611b2d576001600160a01b038416600090815260ce602052604090208054611aad90600190612480565b81548110611abd57611abd61241e565b60009182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611afa57611afa61241e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611b35565b600101611a36565b818103611b5557604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b038416600090815260ce60205260409020805480611b7c57611b7c6124c2565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604103611bda5760208301516040840151606085015160001a611bce87828585611daf565b94509450505050611be2565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401611c13929190612528565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c519190612541565b600060405180830381855afa9150503d8060008114611c8c576040519150601f19603f3d011682016040523d82523d6000602084013e611c91565b606091505b5091509150818015611ca557506020815110155b80156119b757508051630b135d3f60e11b90611cca9083016020908101908401612451565b149695505050505050565b6000611d2a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e709092919063ffffffff16565b9050805160001480611d4b575080806020019051810190611d4b91906123fc565b611daa5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610692565b505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611de65750600090506003610e95565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e3a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e6357600060019250925050610e95565b9660009650945050505050565b6060611e7f8484600085611e87565b949350505050565b606082471015611ee85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610692565b600080866001600160a01b03168587604051611f049190612541565b60006040518083038185875af1925050503d8060008114611f41576040519150601f19603f3d011682016040523d82523d6000602084013e611f46565b606091505b5091509150610ce88783838760608315611fc1578251600003611fba576001600160a01b0385163b611fba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610692565b5081611e7f565b611e7f8383815115611fd65781518083602001fd5b8060405162461bcd60e51b8152600401610692919061255d565b60006020828403121561200257600080fd5b5035919050565b6001600160a01b0381168114610eaf57600080fd5b60008060006060848603121561203357600080fd5b833561203e81612009565b9250602084013561204e81612009565b929592945050506040919091013590565b6000806000806080858703121561207557600080fd5b843561208081612009565b9350602085013561209081612009565b925060408501356120a081612009565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156120df57600080fd5b86356120ea81612009565b955060208701356120fa81612009565b945060408701359350606087013561211181612009565b92506080870135915060a087013567ffffffffffffffff81111561213457600080fd5b8701601f8101891361214557600080fd5b803567ffffffffffffffff81111561215f5761215f6120b0565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561218e5761218e6120b0565b6040528181528282016020018b10156121a657600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b6000602082840312156121db57600080fd5b813560ff811681146116ae57600080fd5b600080602083850312156121ff57600080fd5b823567ffffffffffffffff81111561221657600080fd5b8301601f8101851361222757600080fd5b803567ffffffffffffffff81111561223e57600080fd5b8560208260051b840101111561225357600080fd5b6020919091019590945092505050565b60006020828403121561227557600080fd5b81356116ae81612009565b600081518084526020840193506020830160005b828110156122bb5781516001600160a01b0316865260209586019590910190600101612294565b5093949350505050565b6040815260006122d86040830185612280565b828103602084015280845180835260208301915060208601925060005b818110156123135783518352602093840193909201916001016122f5565b50909695505050505050565b60008060008060008060c0878903121561233857600080fd5b863561234381612009565b9550602087013561235381612009565b9450604087013561236381612009565b959894975094956060810135955060808101359460a0909101359350915050565b6000806040838503121561239757600080fd5b82356123a281612009565b946020939093013593505050565b6020815260006116ae6020830184612280565b600080604083850312156123d657600080fd5b82356123e181612009565b915060208301356123f181612009565b809150509250929050565b60006020828403121561240e57600080fd5b815180151581146116ae57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561244657600080fd5b81516116ae81612009565b60006020828403121561246357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156124935761249361246a565b92915050565b808201808211156124935761249361246a565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b828152604060208201526000611e7f60408301846124fc565b600082516125538184602087016124d8565b9190910192915050565b6020815260006116ae60208301846124fc56fea264697066735822122026810f84cbdea02dc77104b81d050ec3eccfd3c3c3dd93ac4cb76c0ca62b197b64736f6c634300081b0033", } // ContractStrategyManagerABI is the input ABI used to generate the binding from. @@ -69,6 +69,8 @@ type ContractStrategyManagerMethods interface { // ContractStrategyManagerCalls is an auto generated interface that defines the call methods available for an Ethereum contract. type ContractStrategyManagerCalls interface { + DEFAULTBURNADDRESS(opts *bind.CallOpts) (common.Address, error) + DEPOSITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) CalculateStrategyDepositDigestHash(opts *bind.CallOpts, staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) @@ -108,6 +110,8 @@ type ContractStrategyManagerTransacts interface { AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) + BurnShares(opts *bind.TransactOpts, strategy common.Address, sharesToBurn *big.Int) (*types.Transaction, error) + DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) DepositIntoStrategyWithSignature(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) @@ -322,6 +326,37 @@ func (_ContractStrategyManager *ContractStrategyManagerTransactorRaw) Transact(o return _ContractStrategyManager.Contract.contract.Transact(opts, method, params...) } +// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000. +// +// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address) +func (_ContractStrategyManager *ContractStrategyManagerCaller) DEFAULTBURNADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractStrategyManager.contract.Call(opts, &out, "DEFAULT_BURN_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000. +// +// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address) +func (_ContractStrategyManager *ContractStrategyManagerSession) DEFAULTBURNADDRESS() (common.Address, error) { + return _ContractStrategyManager.Contract.DEFAULTBURNADDRESS(&_ContractStrategyManager.CallOpts) +} + +// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000. +// +// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address) +func (_ContractStrategyManager *ContractStrategyManagerCallerSession) DEFAULTBURNADDRESS() (common.Address, error) { + return _ContractStrategyManager.Contract.DEFAULTBURNADDRESS(&_ContractStrategyManager.CallOpts) +} + // DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. // // Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) @@ -861,6 +896,27 @@ func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) AddStr return _ContractStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_ContractStrategyManager.TransactOpts, strategiesToWhitelist) } +// BurnShares is a paid mutator transaction binding the contract method 0xee7a7c04. +// +// Solidity: function burnShares(address strategy, uint256 sharesToBurn) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactor) BurnShares(opts *bind.TransactOpts, strategy common.Address, sharesToBurn *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.contract.Transact(opts, "burnShares", strategy, sharesToBurn) +} + +// BurnShares is a paid mutator transaction binding the contract method 0xee7a7c04. +// +// Solidity: function burnShares(address strategy, uint256 sharesToBurn) returns() +func (_ContractStrategyManager *ContractStrategyManagerSession) BurnShares(strategy common.Address, sharesToBurn *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.BurnShares(&_ContractStrategyManager.TransactOpts, strategy, sharesToBurn) +} + +// BurnShares is a paid mutator transaction binding the contract method 0xee7a7c04. +// +// Solidity: function burnShares(address strategy, uint256 sharesToBurn) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) BurnShares(strategy common.Address, sharesToBurn *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.BurnShares(&_ContractStrategyManager.TransactOpts, strategy, sharesToBurn) +} + // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // // Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) diff --git a/contracts/lib/eigenlayer-middleware b/contracts/lib/eigenlayer-middleware index 1886a96a..d0c104eb 160000 --- a/contracts/lib/eigenlayer-middleware +++ b/contracts/lib/eigenlayer-middleware @@ -1 +1 @@ -Subproject commit 1886a96ac59cdcddb343b2d9b7556c7c2f053fd6 +Subproject commit d0c104eb852ee6bb68f0e7f060a8635fe7bb97b1