diff --git a/Makefile b/Makefile index 06b4d3bc..d8e0ef8d 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ lint: ## runs all linters ___BINDINGS___: ## -core_default := "DelegationManager IRewardsCoordinator ISlasher StrategyManager EigenPod EigenPodManager IStrategy IAVSDirectory" +core_default := "DelegationManager IRewardsCoordinator StrategyManager EigenPod EigenPodManager IStrategy IAVSDirectory IAllocationManager" core_location := "./lib/eigenlayer-middleware/lib/eigenlayer-contracts" core_bindings_location := "../../../../bindings" diff --git a/chainio/clients/elcontracts/bindings.go b/chainio/clients/elcontracts/bindings.go index 09318061..18e15c99 100644 --- a/chainio/clients/elcontracts/bindings.go +++ b/chainio/clients/elcontracts/bindings.go @@ -9,8 +9,8 @@ import ( "github.com/Layr-Labs/eigensdk-go/chainio/clients/eth" delegationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/DelegationManager" avsdirectory "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAVSDirectory" + allocationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAllocationManager" rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator" - slasher "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ISlasher" strategymanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/StrategyManager" "github.com/Layr-Labs/eigensdk-go/logging" "github.com/Layr-Labs/eigensdk-go/utils" @@ -21,16 +21,16 @@ import ( // Unclear why geth bindings don't store and expose the contract address, // so we also store them here in case the different constructors that use this struct need them type ContractBindings struct { - SlasherAddr gethcommon.Address StrategyManagerAddr gethcommon.Address DelegationManagerAddr gethcommon.Address AvsDirectoryAddr gethcommon.Address RewardsCoordinatorAddress gethcommon.Address - Slasher *slasher.ContractISlasher + AllocationManagerAddr gethcommon.Address DelegationManager *delegationmanager.ContractDelegationManager StrategyManager *strategymanager.ContractStrategyManager AvsDirectory *avsdirectory.ContractIAVSDirectory RewardsCoordinator *rewardscoordinator.ContractIRewardsCoordinator + AllocationManager *allocationmanager.ContractIAllocationManager } func NewBindingsFromConfig( @@ -42,10 +42,10 @@ func NewBindingsFromConfig( err error contractDelegationManager *delegationmanager.ContractDelegationManager - contractSlasher *slasher.ContractISlasher contractStrategyManager *strategymanager.ContractStrategyManager - slasherAddr gethcommon.Address + contractAllocationManager *allocationmanager.ContractIAllocationManager strategyManagerAddr gethcommon.Address + allocationManagerAddr gethcommon.Address avsDirectory *avsdirectory.ContractIAVSDirectory rewardsCoordinator *rewardscoordinator.ContractIRewardsCoordinator ) @@ -58,22 +58,22 @@ func NewBindingsFromConfig( return nil, utils.WrapError("Failed to create DelegationManager contract", err) } - slasherAddr, err = contractDelegationManager.Slasher(&bind.CallOpts{}) + strategyManagerAddr, err = contractDelegationManager.StrategyManager(&bind.CallOpts{}) if err != nil { - return nil, utils.WrapError("Failed to fetch Slasher address", err) + return nil, utils.WrapError("Failed to fetch StrategyManager address", err) } - contractSlasher, err = slasher.NewContractISlasher(slasherAddr, client) + contractStrategyManager, err = strategymanager.NewContractStrategyManager(strategyManagerAddr, client) if err != nil { - return nil, utils.WrapError("Failed to fetch Slasher contract", err) + return nil, utils.WrapError("Failed to fetch StrategyManager contract", err) } - strategyManagerAddr, err = contractDelegationManager.StrategyManager(&bind.CallOpts{}) + allocationManagerAddr, err = contractDelegationManager.AllocationManager(&bind.CallOpts{}) if err != nil { - return nil, utils.WrapError("Failed to fetch StrategyManager address", err) + return nil, utils.WrapError("Failed to fetch AllocationManager address", err) } - contractStrategyManager, err = strategymanager.NewContractStrategyManager(strategyManagerAddr, client) + contractAllocationManager, err = allocationmanager.NewContractIAllocationManager(allocationManagerAddr, client) if err != nil { - return nil, utils.WrapError("Failed to fetch StrategyManager contract", err) + return nil, utils.WrapError("Failed to fetch AllocationManager contract", err) } } @@ -96,16 +96,16 @@ func NewBindingsFromConfig( } return &ContractBindings{ - SlasherAddr: slasherAddr, StrategyManagerAddr: strategyManagerAddr, DelegationManagerAddr: cfg.DelegationManagerAddress, AvsDirectoryAddr: cfg.AvsDirectoryAddress, RewardsCoordinatorAddress: cfg.RewardsCoordinatorAddress, - Slasher: contractSlasher, StrategyManager: contractStrategyManager, DelegationManager: contractDelegationManager, AvsDirectory: avsDirectory, RewardsCoordinator: rewardsCoordinator, + AllocationManager: contractAllocationManager, + AllocationManagerAddr: allocationManagerAddr, }, nil } func isZeroAddress(address gethcommon.Address) bool { @@ -125,15 +125,6 @@ func NewEigenlayerContractBindings( return nil, utils.WrapError("Failed to create DelegationManager contract", err) } - slasherAddr, err := contractDelegationManager.Slasher(&bind.CallOpts{}) - if err != nil { - return nil, utils.WrapError("Failed to fetch Slasher address", err) - } - contractSlasher, err := slasher.NewContractISlasher(slasherAddr, ethclient) - if err != nil { - return nil, utils.WrapError("Failed to fetch Slasher contract", err) - } - strategyManagerAddr, err := contractDelegationManager.StrategyManager(&bind.CallOpts{}) if err != nil { return nil, utils.WrapError("Failed to fetch StrategyManager address", err) @@ -149,11 +140,9 @@ func NewEigenlayerContractBindings( } return &ContractBindings{ - SlasherAddr: slasherAddr, StrategyManagerAddr: strategyManagerAddr, DelegationManagerAddr: delegationManagerAddr, AvsDirectoryAddr: avsDirectoryAddr, - Slasher: contractSlasher, StrategyManager: contractStrategyManager, DelegationManager: contractDelegationManager, AvsDirectory: avsDirectory, diff --git a/chainio/clients/elcontracts/builder.go b/chainio/clients/elcontracts/builder.go index 60f546b9..346e3d76 100644 --- a/chainio/clients/elcontracts/builder.go +++ b/chainio/clients/elcontracts/builder.go @@ -25,11 +25,11 @@ func BuildReadClients( } elChainReader := NewChainReader( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.AvsDirectory, elContractBindings.RewardsCoordinator, + elContractBindings.AllocationManager, logger, client, ) @@ -54,21 +54,21 @@ func BuildClients( } elChainReader := NewChainReader( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.AvsDirectory, elContractBindings.RewardsCoordinator, + elContractBindings.AllocationManager, logger, client, ) elChainWriter := NewChainWriter( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.RewardsCoordinator, elContractBindings.AvsDirectory, + elContractBindings.AllocationManager, elContractBindings.StrategyManagerAddr, elChainReader, client, diff --git a/chainio/clients/elcontracts/reader.go b/chainio/clients/elcontracts/reader.go index 6c4cb9d0..2d47c483 100644 --- a/chainio/clients/elcontracts/reader.go +++ b/chainio/clients/elcontracts/reader.go @@ -6,15 +6,14 @@ import ( "math/big" "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" gethcommon "github.com/ethereum/go-ethereum/common" "github.com/Layr-Labs/eigensdk-go/chainio/clients/eth" delegationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/DelegationManager" avsdirectory "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAVSDirectory" + allocationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAllocationManager" erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IERC20" rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator" - slasher "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ISlasher" strategy "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IStrategy" strategymanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/StrategyManager" "github.com/Layr-Labs/eigensdk-go/logging" @@ -23,38 +22,38 @@ import ( ) type Config struct { - DelegationManagerAddress common.Address - AvsDirectoryAddress common.Address - RewardsCoordinatorAddress common.Address + DelegationManagerAddress gethcommon.Address + AvsDirectoryAddress gethcommon.Address + RewardsCoordinatorAddress gethcommon.Address } type ChainReader struct { logger logging.Logger - slasher slasher.ContractISlasherCalls delegationManager *delegationmanager.ContractDelegationManager strategyManager *strategymanager.ContractStrategyManager avsDirectory *avsdirectory.ContractIAVSDirectory rewardsCoordinator *rewardscoordinator.ContractIRewardsCoordinator + allocationManager *allocationmanager.ContractIAllocationManager ethClient eth.HttpBackend } func NewChainReader( - slasher slasher.ContractISlasherCalls, delegationManager *delegationmanager.ContractDelegationManager, strategyManager *strategymanager.ContractStrategyManager, avsDirectory *avsdirectory.ContractIAVSDirectory, rewardsCoordinator *rewardscoordinator.ContractIRewardsCoordinator, + allocationManager *allocationmanager.ContractIAllocationManager, logger logging.Logger, ethClient eth.HttpBackend, ) *ChainReader { logger = logger.With(logging.ComponentKey, "elcontracts/reader") return &ChainReader{ - slasher: slasher, delegationManager: delegationManager, strategyManager: strategyManager, avsDirectory: avsDirectory, rewardsCoordinator: rewardsCoordinator, + allocationManager: allocationManager, logger: logger, ethClient: ethClient, } @@ -78,11 +77,11 @@ func BuildELChainReader( return nil, err } return NewChainReader( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.AvsDirectory, elContractBindings.RewardsCoordinator, + elContractBindings.AllocationManager, logger, ethClient, ), nil @@ -102,11 +101,11 @@ func NewReaderFromConfig( return nil, err } return NewChainReader( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.AvsDirectory, elContractBindings.RewardsCoordinator, + elContractBindings.AllocationManager, logger, ethClient, ), nil @@ -143,7 +142,7 @@ func (r *ChainReader) GetOperatorDetails(opts *bind.CallOpts, operator types.Ope return types.Operator{ Address: operator.Address, - StakerOptOutWindowBlocks: operatorDetails.StakerOptOutWindowBlocks, + StakerOptOutWindowBlocks: operatorDetails.DeprecatedStakerOptOutWindowBlocks, DelegationApproverAddress: operatorDetails.DelegationApprover.Hex(), }, nil } @@ -154,11 +153,11 @@ func (r *ChainReader) GetStrategyAndUnderlyingToken( ) (*strategy.ContractIStrategy, gethcommon.Address, error) { contractStrategy, err := strategy.NewContractIStrategy(strategyAddr, r.ethClient) if err != nil { - return nil, common.Address{}, utils.WrapError("Failed to fetch strategy contract", err) + return nil, gethcommon.Address{}, utils.WrapError("Failed to fetch strategy contract", err) } underlyingTokenAddr, err := contractStrategy.UnderlyingToken(opts) if err != nil { - return nil, common.Address{}, utils.WrapError("Failed to fetch token contract", err) + return nil, gethcommon.Address{}, utils.WrapError("Failed to fetch token contract", err) } return contractStrategy, underlyingTokenAddr, nil } @@ -170,41 +169,19 @@ func (r *ChainReader) GetStrategyAndUnderlyingERC20Token( ) (*strategy.ContractIStrategy, erc20.ContractIERC20Methods, gethcommon.Address, error) { contractStrategy, err := strategy.NewContractIStrategy(strategyAddr, r.ethClient) if err != nil { - return nil, nil, common.Address{}, utils.WrapError("Failed to fetch strategy contract", err) + return nil, nil, gethcommon.Address{}, utils.WrapError("Failed to fetch strategy contract", err) } underlyingTokenAddr, err := contractStrategy.UnderlyingToken(opts) if err != nil { - return nil, nil, common.Address{}, utils.WrapError("Failed to fetch token contract", err) + return nil, nil, gethcommon.Address{}, utils.WrapError("Failed to fetch token contract", err) } contractUnderlyingToken, err := erc20.NewContractIERC20(underlyingTokenAddr, r.ethClient) if err != nil { - return nil, nil, common.Address{}, utils.WrapError("Failed to fetch token contract", err) + return nil, nil, gethcommon.Address{}, utils.WrapError("Failed to fetch token contract", err) } return contractStrategy, contractUnderlyingToken, underlyingTokenAddr, nil } -func (r *ChainReader) ServiceManagerCanSlashOperatorUntilBlock( - opts *bind.CallOpts, - operatorAddr gethcommon.Address, - serviceManagerAddr gethcommon.Address, -) (uint32, error) { - if r.slasher == nil { - return uint32(0), errors.New("slasher contract not provided") - } - - return r.slasher.ContractCanSlashOperatorUntilBlock( - opts, operatorAddr, serviceManagerAddr, - ) -} - -func (r *ChainReader) OperatorIsFrozen(opts *bind.CallOpts, operatorAddr gethcommon.Address) (bool, error) { - if r.slasher == nil { - return false, errors.New("slasher contract not provided") - } - - return r.slasher.IsFrozen(opts, operatorAddr) -} - func (r *ChainReader) GetOperatorSharesInStrategy( opts *bind.CallOpts, operatorAddr gethcommon.Address, @@ -264,9 +241,9 @@ func (r *ChainReader) CurrRewardsCalculationEndTimestamp(opts *bind.CallOpts) (u func (r *ChainReader) GetCurrentClaimableDistributionRoot( opts *bind.CallOpts, -) (rewardscoordinator.IRewardsCoordinatorDistributionRoot, error) { +) (rewardscoordinator.IRewardsCoordinatorTypesDistributionRoot, error) { if r.rewardsCoordinator == nil { - return rewardscoordinator.IRewardsCoordinatorDistributionRoot{}, errors.New( + return rewardscoordinator.IRewardsCoordinatorTypesDistributionRoot{}, errors.New( "RewardsCoordinator contract not provided", ) } @@ -284,7 +261,7 @@ func (r *ChainReader) GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byt func (r *ChainReader) CheckClaim( opts *bind.CallOpts, - claim rewardscoordinator.IRewardsCoordinatorRewardsMerkleClaim, + claim rewardscoordinator.IRewardsCoordinatorTypesRewardsMerkleClaim, ) (bool, error) { if r.rewardsCoordinator == nil { return false, errors.New("RewardsCoordinator contract not provided") @@ -292,3 +269,67 @@ func (r *ChainReader) CheckClaim( return r.rewardsCoordinator.CheckClaim(opts, claim) } + +func (r *ChainReader) GetAllocatableMagnitude( + opts *bind.CallOpts, + operatorAddress gethcommon.Address, + strategyAddress gethcommon.Address, +) (uint64, error) { + if r.allocationManager == nil { + return 0, errors.New("AllocationManager contract not provided") + } + + return r.allocationManager.GetAllocatableMagnitude(opts, operatorAddress, strategyAddress) +} + +func (r *ChainReader) GetMaxMagnitudes( + opts *bind.CallOpts, + operatorAddress gethcommon.Address, + strategyAddresses []gethcommon.Address, +) ([]uint64, error) { + if r.allocationManager == nil { + return []uint64{}, errors.New("AllocationManager contract not provided") + } + + return r.allocationManager.GetMaxMagnitudes(opts, operatorAddress, strategyAddresses) +} + +func (r *ChainReader) GetAllocationInfo( + opts *bind.CallOpts, + operatorAddress gethcommon.Address, + strategyAddress gethcommon.Address, +) ([]AllocationInfo, error) { + if r.allocationManager == nil { + return nil, errors.New("AllocationManager contract not provided") + } + + opSets, allocationInfo, err := r.allocationManager.GetAllocationInfo1(opts, operatorAddress, strategyAddress) + if err != nil { + return nil, err + } + + allocationsInfo := make([]AllocationInfo, len(opSets)) + for i, opSet := range opSets { + allocationsInfo[i] = AllocationInfo{ + OperatorSetId: opSet.OperatorSetId, + AvsAddress: opSet.Avs, + CurrentMagnitude: big.NewInt(int64(allocationInfo[i].CurrentMagnitude)), + PendingDiff: allocationInfo[i].PendingDiff, + CompletableTimestamp: allocationInfo[i].EffectTimestamp, + } + } + + return allocationsInfo, nil +} + +func (r *ChainReader) GetOperatorShares( + opts *bind.CallOpts, + operatorAddress gethcommon.Address, + strategyAddresses []gethcommon.Address, +) ([]*big.Int, error) { + if r.delegationManager == nil { + return nil, errors.New("DelegationManager contract not provided") + } + + return r.delegationManager.GetOperatorShares(opts, operatorAddress, strategyAddresses) +} diff --git a/chainio/clients/elcontracts/types.go b/chainio/clients/elcontracts/types.go new file mode 100644 index 00000000..f816f424 --- /dev/null +++ b/chainio/clients/elcontracts/types.go @@ -0,0 +1,20 @@ +package elcontracts + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" +) + +type PendingDeallocation struct { + MagnitudeDiff uint64 + CompletableTimestamp uint32 +} + +type AllocationInfo struct { + CurrentMagnitude *big.Int + PendingDiff *big.Int + CompletableTimestamp uint32 + OperatorSetId uint32 + AvsAddress common.Address +} diff --git a/chainio/clients/elcontracts/writer.go b/chainio/clients/elcontracts/writer.go index c921c331..36bcb111 100644 --- a/chainio/clients/elcontracts/writer.go +++ b/chainio/clients/elcontracts/writer.go @@ -14,9 +14,9 @@ import ( "github.com/Layr-Labs/eigensdk-go/chainio/txmgr" delegationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/DelegationManager" avsdirectory "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAVSDirectory" + allocationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAllocationManager" erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IERC20" rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator" - slasher "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ISlasher" strategy "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IStrategy" strategymanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/StrategyManager" "github.com/Layr-Labs/eigensdk-go/logging" @@ -32,11 +32,11 @@ type Reader interface { } type ChainWriter struct { - slasher *slasher.ContractISlasher delegationManager *delegationmanager.ContractDelegationManager strategyManager *strategymanager.ContractStrategyManager rewardsCoordinator *rewardscoordinator.ContractIRewardsCoordinator avsDirectory *avsdirectory.ContractIAVSDirectory + allocationManager *allocationmanager.ContractIAllocationManager strategyManagerAddr gethcommon.Address elChainReader Reader ethClient eth.HttpBackend @@ -45,11 +45,11 @@ type ChainWriter struct { } func NewChainWriter( - slasher *slasher.ContractISlasher, delegationManager *delegationmanager.ContractDelegationManager, strategyManager *strategymanager.ContractStrategyManager, rewardsCoordinator *rewardscoordinator.ContractIRewardsCoordinator, avsDirectory *avsdirectory.ContractIAVSDirectory, + allocationManager *allocationmanager.ContractIAllocationManager, strategyManagerAddr gethcommon.Address, elChainReader Reader, ethClient eth.HttpBackend, @@ -60,11 +60,11 @@ func NewChainWriter( logger = logger.With(logging.ComponentKey, "elcontracts/writer") return &ChainWriter{ - slasher: slasher, delegationManager: delegationManager, strategyManager: strategyManager, strategyManagerAddr: strategyManagerAddr, rewardsCoordinator: rewardsCoordinator, + allocationManager: allocationManager, avsDirectory: avsDirectory, elChainReader: elChainReader, logger: logger, @@ -93,20 +93,20 @@ func BuildELChainWriter( return nil, err } elChainReader := NewChainReader( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.AvsDirectory, elContractBindings.RewardsCoordinator, + elContractBindings.AllocationManager, logger, ethClient, ) return NewChainWriter( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.RewardsCoordinator, elContractBindings.AvsDirectory, + elContractBindings.AllocationManager, elContractBindings.StrategyManagerAddr, elChainReader, ethClient, @@ -132,20 +132,20 @@ func NewWriterFromConfig( return nil, err } elChainReader := NewChainReader( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.AvsDirectory, elContractBindings.RewardsCoordinator, + elContractBindings.AllocationManager, logger, ethClient, ) return NewChainWriter( - elContractBindings.Slasher, elContractBindings.DelegationManager, elContractBindings.StrategyManager, elContractBindings.RewardsCoordinator, elContractBindings.AvsDirectory, + elContractBindings.AllocationManager, elContractBindings.StrategyManagerAddr, elChainReader, ethClient, @@ -165,19 +165,26 @@ func (w *ChainWriter) RegisterAsOperator( } w.logger.Infof("registering operator %s to EigenLayer", operator.Address) - opDetails := delegationmanager.IDelegationManagerOperatorDetails{ + 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), - StakerOptOutWindowBlocks: operator.StakerOptOutWindowBlocks, - DelegationApprover: gethcommon.HexToAddress(operator.DelegationApproverAddress), + // 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 { return nil, err } - tx, err := w.delegationManager.RegisterAsOperator(noSendTxOpts, opDetails, operator.MetadataUrl) + tx, err := w.delegationManager.RegisterAsOperator( + noSendTxOpts, + opDetails, + operator.AllocationDelay, + operator.MetadataUrl, + ) if err != nil { return nil, err } @@ -200,12 +207,14 @@ func (w *ChainWriter) UpdateOperatorDetails( } w.logger.Infof("updating operator details of operator %s to EigenLayer", operator.Address) - opDetails := delegationmanager.IDelegationManagerOperatorDetails{ + 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), - StakerOptOutWindowBlocks: operator.StakerOptOutWindowBlocks, + // DeprecatedStakerOptOutWindowBlocks has been deprecated, so we just use the operator's + // StakerOptOutWindowBlocks + DeprecatedStakerOptOutWindowBlocks: operator.StakerOptOutWindowBlocks, } noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() @@ -333,7 +342,7 @@ func (w *ChainWriter) SetClaimerFor( func (w *ChainWriter) ProcessClaim( ctx context.Context, - claim rewardscoordinator.IRewardsCoordinatorRewardsMerkleClaim, + claim rewardscoordinator.IRewardsCoordinatorTypesRewardsMerkleClaim, earnerAddress gethcommon.Address, waitForReceipt bool, ) (*gethtypes.Receipt, error) { @@ -395,15 +404,42 @@ func (w *ChainWriter) ForceDeregisterFromOperatorSets( return receipt, nil } -func (w *ChainWriter) SetOperatorCommissionBips( +//func (w *ChainWriter) SetOperatorCommissionBips( +// ctx context.Context, +// operatorSet rewardscoordinator.OperatorSet, +// rewardType uint8, +// commissionBips uint16, +// waitForReceipt bool, +//) (*gethtypes.Receipt, error) { +// if w.rewardsCoordinator == nil { +// return nil, errors.New("RewardsCoordinator contract not provided") +// } +// +// noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() +// if err != nil { +// return nil, utils.WrapError("failed to get no send tx opts", err) +// } +// +// tx, err := w.rewardsCoordinator.SetOperatorCommissionBips(noSendTxOpts, operatorSet, rewardType, commissionBips) +// if err != nil { +// return nil, utils.WrapError("failed to create SetOperatorCommissionBips tx", err) +// } +// +// receipt, err := w.txMgr.Send(ctx, tx, waitForReceipt) +// if err != nil { +// return nil, utils.WrapError("failed to send tx", err) +// } +// +// return receipt, nil +//} + +func (w *ChainWriter) ModifyAllocations( ctx context.Context, - operatorSet rewardscoordinator.IAVSDirectoryOperatorSet, - rewardType uint8, - commissionBips uint16, + allocations []allocationmanager.IAllocationManagerTypesMagnitudeAllocation, waitForReceipt bool, ) (*gethtypes.Receipt, error) { - if w.rewardsCoordinator == nil { - return nil, errors.New("RewardsCoordinator contract not provided") + if w.allocationManager == nil { + return nil, errors.New("AllocationManager contract not provided") } noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() @@ -411,9 +447,9 @@ func (w *ChainWriter) SetOperatorCommissionBips( return nil, utils.WrapError("failed to get no send tx opts", err) } - tx, err := w.rewardsCoordinator.SetOperatorCommissionBips(noSendTxOpts, operatorSet, rewardType, commissionBips) + tx, err := w.allocationManager.ModifyAllocations(noSendTxOpts, allocations) if err != nil { - return nil, utils.WrapError("failed to create SetOperatorCommissionBips tx", err) + return nil, utils.WrapError("failed to create ModifyAllocations tx", err) } receipt, err := w.txMgr.Send(ctx, tx, waitForReceipt) @@ -423,3 +459,30 @@ func (w *ChainWriter) SetOperatorCommissionBips( return receipt, nil } + +func (w *ChainWriter) InitializeAllocationDelay( + ctx context.Context, + operatorAddress gethcommon.Address, + delay uint32, + waitForReceipt bool, +) (*gethtypes.Receipt, error) { + if w.allocationManager == nil { + return nil, errors.New("AllocationManager contract not provided") + } + + noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() + if err != nil { + return nil, utils.WrapError("failed to get no send tx opts", err) + } + + tx, err := w.allocationManager.SetAllocationDelay(noSendTxOpts, operatorAddress, delay) + if err != nil { + return nil, utils.WrapError("failed to create InitializeAllocationDelay tx", err) + } + receipt, err := w.txMgr.Send(ctx, tx, waitForReceipt) + if err != nil { + return nil, utils.WrapError("failed to send tx", err) + } + + return receipt, nil +} diff --git a/contracts/bindings/DelegationManager/binding.go b/contracts/bindings/DelegationManager/binding.go index 3976f764..40e858e4 100644 --- a/contracts/bindings/DelegationManager/binding.go +++ b/contracts/bindings/DelegationManager/binding.go @@ -29,29 +29,29 @@ var ( _ = abi.ConvertType ) -// IDelegationManagerOperatorDetails is an auto generated low-level Go binding around an user-defined struct. -type IDelegationManagerOperatorDetails struct { - DeprecatedEarningsReceiver common.Address - DelegationApprover common.Address - StakerOptOutWindowBlocks uint32 +// 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 } -// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. -type IDelegationManagerQueuedWithdrawalParams struct { +// IDelegationManagerTypesQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerTypesQueuedWithdrawalParams struct { Strategies []common.Address Shares []*big.Int Withdrawer common.Address } -// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct. -type IDelegationManagerWithdrawal struct { - Staker common.Address - DelegatedTo common.Address - Withdrawer common.Address - Nonce *big.Int - StartBlock uint32 - Strategies []common.Address - Shares []*big.Int +// IDelegationManagerTypesWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerTypesWithdrawal struct { + Staker common.Address + DelegatedTo common.Address + Withdrawer common.Address + Nonce *big.Int + StartTimestamp uint32 + Strategies []common.Address + ScaledSharesToWithdraw []*big.Int } // ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct. @@ -62,8 +62,8 @@ type ISignatureUtilsSignatureWithExpiry struct { // ContractDelegationManagerMetaData contains all meta data concerning the ContractDelegationManager contract. var ContractDelegationManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_stakerNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateToBySignature\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegatedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"getDelegatableShares\",\"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\":\"getWithdrawalDelay\",\"inputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_minWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newMinWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawalDelayBlocks\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerOptOutWindowBlocks\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinWithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDetailsModified\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"__deprecated_earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"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\":\"event\",\"name\":\"WithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212201a88ea42e4cac4dd0831a1f8bfe22cc6c2ba4c8776376923419ad9ee255481f164736f6c634300080c0033", + 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\":\"_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\":\"LEGACY_MIN_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"LEGACY_WITHDRAWAL_CHECK_VALUE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_WITHDRAWAL_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"calculateCurrentStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"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\":\"calculateStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"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\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledSharesToWithdraw\",\"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\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledSharesToWithdraw\",\"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\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledSharesToWithdraw\",\"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\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"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\":\"previousTotalMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newTotalMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateToBySignature\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegatedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"getCompletableTimestamp\",\"inputs\":[{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"completableTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"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\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"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\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerScalingFactor\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositScalingFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isBeaconChainScalingFactorSet\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"beaconChainScalingFactor\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledSharesToWithdraw\",\"type\":\"uint256[]\",\"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\":\"AllocationDelaySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"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\":\"WithdrawalDelayExceedsMax\",\"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: "0x61016060405234801561001157600080fd5b50604051615a33380380615a3383398101604081905261003091610200565b6001600160a01b0380861660805280851660a05280841660c052821660e05263ffffffff811661010052466101205261006761007d565b61014052610073610129565b505050505061027e565b60006101205146146101215750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b506101405190565b600054610100900460ff16156101955760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101e6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101fd57600080fd5b50565b600080600080600060a0868803121561021857600080fd5b8551610223816101e8565b6020870151909550610234816101e8565b6040870151909450610245816101e8565b6060870151909350610256816101e8565b608087015190925063ffffffff8116811461027057600080fd5b809150509295509295909350565b60805160a05160c05160e0516101005161012051610140516156dd6103566000396000613e9601526000613dd60152600081816105bd01528181610f680152610fb70152600081816108dc01528181610bb10152818161123c015281816113530152818161163d01528181611f25015281816120470152818161251d015281816134f501526138fc0152600081816105830152818161117501528181611571015281816119a40152613dad01526000818161044f01528181611143015281816118f30152613d870152600061068701526156dd6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063715018a6116101b8578063c5e480db11610104578063e4cc3f90116100a2578063f16172b01161007c578063f16172b01461096b578063f2fde38b1461097e578063f698da2514610991578063fabc1cbc1461099957600080fd5b8063e4cc3f9014610925578063eea9064b14610938578063f0e0e6761461094b57600080fd5b8063ca8aa7c7116100de578063ca8aa7c7146108d7578063cb00387b146108fe578063cebc04ef14610907578063da8be8641461091257600080fd5b8063c5e480db1461080b578063c94b5111146108b1578063c978f7ac146108c457600080fd5b80639104c31911610171578063a17884841161014b578063a178848414610787578063a57ab10b146107a7578063b7f06ebe146107ba578063bb45fef2146107dd57600080fd5b80639104c319146107465780639435bb431461076157806399be81c81461077457600080fd5b8063715018a6146106bc578063778e55f3146106c45780637f548071146106ef578063886f1195146107025780638da5cb5b14610715578063900413471461072657600080fd5b806343377382116102925780635ac86ab71161023057806365da12641161020a57806365da12641461063857806366d5ba93146106615780636b3aa72e146106825780636d70f7ae146106a957600080fd5b80635ac86ab7146105fa5780635c975abb1461061d5780635d9aed231461062557600080fd5b8063497300601161026c57806349730060146105a55780634a5f2b5d146105b8578063595c6a67146105df578063597b36da146105e757600080fd5b806343377382146104ee578063457c6070146105155780634665bcda1461057e57600080fd5b80631794bb3c116102ff57806339b70e38116102d957806339b70e381461044a5780633c651cf2146104895780633cdeb5e01461049c5780633e28391d146104cb57600080fd5b80631794bb3c146104045780631bbce0911461041757806329c77d4f1461042a57600080fd5b806304a4f979146103475780630b9f487a146103815780630dd8dd021461039457806310d67a2f146103b4578063136439dd146103c957806315c4a288146103dc575b600080fd5b61036e7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61036e61038f366004614445565b6109ac565b6103a76103a23660046144e4565b610a36565b6040516103789190614525565b6103c76103c236600461455d565b610d75565b005b6103c76103d736600461457a565b610e29565b6103ef6103ea3660046145b0565b610f14565b60405163ffffffff9091168152602001610378565b6103c76104123660046145cd565b610fe4565b61036e6104253660046145cd565b611108565b61036e61043836600461455d565b609b6020526000908152604090205481565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610378565b6103c761049736600461460e565b611138565b6104716104aa36600461455d565b6001600160a01b039081166000908152609960205260409020600101541690565b6104de6104d936600461455d565b6112eb565b6040519015158152602001610378565b61036e7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61055a610523366004614654565b60a26020908152600092835260408084209091529082529020805460019091015460ff81169061010090046001600160401b031683565b6040805193845291151560208401526001600160401b031690820152606001610378565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b6103c76105b33660046146e0565b61130b565b6103ef7f000000000000000000000000000000000000000000000000000000000000000081565b6103c761146e565b61036e6105f536600461498a565b611536565b6104de6106083660046149c6565b606654600160ff9092169190911b9081161490565b60665461036e565b6103c76106333660046149fe565b611566565b61047161064636600461455d565b609a602052600090815260409020546001600160a01b031681565b61067461066f36600461455d565b6118ca565b604051610378929190614ab7565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b6104de6106b736600461455d565b611bd7565b6103c7611c0e565b61036e6106d2366004614654565b609860209081526000928352604080842090915290825290205481565b6103c76106fd366004614b87565b611c22565b606554610471906001600160a01b031681565b6033546001600160a01b0316610471565b610739610734366004614c1b565b611d0b565b6040516103789190614c6a565b61047173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103c761076f366004614c7d565b611de7565b6103c7610782366004614d20565b611ead565b61036e61079536600461455d565b609f6020526000908152604090205481565b6103c76107b5366004614d55565b611f1a565b6104de6107c836600461457a565b609e6020526000908152604090205460ff1681565b6104de6107eb366004614db1565b609c60209081526000928352604080842090915290825290205460ff1681565b61087b61081936600461455d565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610378565b61036e6108bf366004614ddd565b611fac565b6107396108d2366004614c1b565b612016565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b61036e61c4e081565b6103ef633b9aca0081565b6103a761092036600461455d565b6122f7565b6103c7610933366004614e33565b6128e6565b6103c7610946366004614eac565b61292d565b61095e610959366004614f05565b61298b565b6040516103789190614fb8565b6103c761097936600461501d565b612a32565b6103c761098c36600461455d565b612a62565b61036e612ad8565b6103c76109a736600461457a565b612ae7565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c08101829052600090610a2c9060e0015b60405160208183030381529060405280519060200120612bef565b9695505050505050565b606654606090600190600290811603610a625760405163840a48d560e01b815260040160405180910390fd5b6000836001600160401b03811115610a7c57610a7c614743565b604051908082528060200260200182016040528015610aa5578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610d6a57868682818110610ae057610ae0615039565b9050602002810190610af2919061504f565b610b0090602081019061506f565b9050878783818110610b1457610b14615039565b9050602002810190610b26919061504f565b610b30908061506f565b905014610b50576040516343714afd60e01b815260040160405180910390fd5b33878783818110610b6357610b63615039565b9050602002810190610b75919061504f565b610b8690606081019060400161455d565b6001600160a01b031614610bad576040516330c4716960e21b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb87848a8a86818110610bf157610bf1615039565b9050602002810190610c03919061504f565b610c0d908061506f565b6040518463ffffffff1660e01b8152600401610c2b939291906150f8565b600060405180830381865afa158015610c48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c70919081019061511d565b9050610d4433848a8a86818110610c8957610c89615039565b9050602002810190610c9b919061504f565b610ca5908061506f565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ceb57610ceb615039565b9050602002810190610cfd919061504f565b610d0b90602081019061506f565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612c1e915050565b848381518110610d5657610d56615039565b602090810291909101015250600101610ac6565b509095945050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dec91906151b1565b6001600160a01b0316336001600160a01b031614610e1d5760405163794821ff60e01b815260040160405180910390fd5b610e26816130af565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9591906151ce565b610eb257604051631d77d47760e21b815260040160405180910390fd5b60665481811614610ed65760405163c61dca5d60e01b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6000633b9aca0063ffffffff83161015610f625743610f3b61c4e063ffffffff8516615201565b1115610f5a576040516378f67ae160e11b815260040160405180910390fd5b506000919050565b42610f8d7f000000000000000000000000000000000000000000000000000000000000000084615214565b63ffffffff161115610fb2576040516378f67ae160e11b815260040160405180910390fd5b610fdc7f000000000000000000000000000000000000000000000000000000000000000083615214565b90505b919050565b600054610100900460ff16158080156110045750600054600160ff909116105b8061101e5750303b15801561101e575060005460ff166001145b6110865760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156110a9576000805461ff0019166101001790555b6110b3838361313f565b6110bc846131c4565b8015611102576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b0383166000908152609b602052604081205461112e9085908585611fac565b90505b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111975750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6111b45760405163045206a560e21b815260040160405180910390fd5b6111bd846112eb565b15611102576001600160a01b038481166000908152609a6020526040808220548151600180825281840190935293169290816020016020820280368337019050509050848160008151811061121457611214615039565b6001600160a01b03928316602091820292909201015260405163547afb8760e01b81526000917f0000000000000000000000000000000000000000000000000000000000000000169063547afb87906112739086908690600401615230565b600060405180830381865afa158015611290573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b8919081019061511d565b90506112e28388888888866000815181106112d5576112d5615039565b6020026020010151613216565b50505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b611314336112eb565b1561133257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e690604401600060405180830381600087803b15801561139f57600080fd5b505af11580156113b3573d6000803e3d6000fd5b505050506113c1338561330f565b6040805180820190915260608152600060208201526113e33380836000613367565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e28660405161141c9190615254565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090848460405161145f9291906152ab565b60405180910390a25050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da91906151ce565b6114f757604051631d77d47760e21b815260040160405180910390fd5b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016115499190615359565b604051602081830303815290604052805190602001209050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115af57604051633213a66160e21b815260040160405180910390fd5b6001600160a01b038381166000908152609a602052604080822054815160018082528184019093529316929081602001602082028036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08160008151811061161557611615615039565b6001600160a01b03928316602091820292909201015260405163547afb8760e01b81526000917f0000000000000000000000000000000000000000000000000000000000000000169063547afb87906116749086908690600401615230565b600060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116b9919081019061511d565b6001600160a01b038716600090815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081516060810183528154815260019091015460ff81161515938201939093526101009092046001600160401b0316908201528251929350909161175691908490849061173e5761173e615039565b6020026020010151886135f59092919063ffffffff16565b6001600160a01b038816600090815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452909152902090915061179a8187613632565b6001810154604080516001600160a01b038b1681526101009092046001600160401b031660208301527fddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd910160405180910390a16001600160a01b038816600090815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081516060810183528154815260019091015460ff81161515938201939093526101009092046001600160401b031690820152845161188691908690849061186e5761186e615039565b60200260200101518a6135f59092919063ffffffff16565b9050611891896112eb565b156118bf576118bf868a73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118ba858861536c565b6136bd565b505050505050505050565b6040516394f649dd60e01b81526001600160a01b038281166004830152606091829160009182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd90602401600060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261196291908101906153dd565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092506000917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa1580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0f919061549e565b905080600003611a2457509094909350915050565b600083516001611a349190615201565b6001600160401b03811115611a4b57611a4b614743565b604051908082528060200260200182016040528015611a74578160200160208202803683370190505b509050600084516001611a879190615201565b6001600160401b03811115611a9e57611a9e614743565b604051908082528060200260200182016040528015611ac7578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082865181518110611af257611af2615039565b60200260200101906001600160a01b031690816001600160a01b0316815250508281865181518110611b2657611b26615039565b60200260200101818152505060005b8551811015611bc957858181518110611b5057611b50615039565b6020026020010151838281518110611b6a57611b6a615039565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611b9c57611b9c615039565b6020026020010151828281518110611bb657611bb6615039565b6020908102919091010152600101611b35565b509097909650945050505050565b60006001600160a01b03821615801590610fdc5750506001600160a01b039081166000818152609a60205260409020549091161490565b611c16613746565b611c2060006131c4565b565b4283602001511015611c4757604051630819bdcd60e01b815260040160405180910390fd5b611c50856112eb565b15611c6e57604051633bf2b50360e11b815260040160405180910390fd5b611c7784611bd7565b611c94576040516325ec6c1f60e01b815260040160405180910390fd5b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050611cd986611cd28884898960200151611fac565b86516137a0565b6001600160a01b0386166000908152609b60205260409020600182019055611d0386868585613367565b505050505050565b6060600082516001600160401b03811115611d2857611d28614743565b604051908082528060200260200182016040528015611d51578160200160208202803683370190505b50905060005b8351811015611ddd576001600160a01b03851660009081526098602052604081208551909190869084908110611d8f57611d8f615039565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611dca57611dca615039565b6020908102919091010152600101611d57565b5090505b92915050565b606654600290600490811603611e105760405163840a48d560e01b815260040160405180910390fd5b611e186137d1565b60005b86811015611ea257611e9a888883818110611e3857611e38615039565b9050602002810190611e4a91906154b7565b878784818110611e5c57611e5c615039565b9050602002810190611e6e919061506f565b878786818110611e8057611e80615039565b9050602002016020810190611e9591906154cd565b61382a565b600101611e1b565b506112e2600160c955565b611eb633611bd7565b611ed3576040516325ec6c1f60e01b815260040160405180910390fd5b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611f0e9291906152ab565b60405180910390a25050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f63576040516323d871a560e01b815260040160405180910390fd5b6001600160a01b038085166000908152609860209081526040808320938716835292905290812054611f96908484613d2a565b9050611fa585600086846136bd565b5050505050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a0810182905260009061200d9060c001610a11565b95945050505050565b6001600160a01b038083166000908152609a602052604080822054905163547afb8760e01b815260609391821692917f0000000000000000000000000000000000000000000000000000000000000000169063547afb879061207e9085908890600401615230565b600060405180830381865afa15801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c3919081019061511d565b905083516001600160401b038111156120de576120de614743565b604051908082528060200260200182016040528015612107578160200160208202803683370190505b50925060005b84518110156122ee57600061213a86838151811061212d5761212d615039565b6020026020010151613d5f565b90506000816001600160a01b031663fe243a178989868151811061216057612160615039565b60200260200101516040518363ffffffff1660e01b815260040161219a9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa1580156121b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121db919061549e565b90506001600160a01b038516156122c4576001600160a01b038816600090815260a26020526040812088516122a192908a908790811061221d5761221d615039565b6020908102919091018101516001600160a01b0316825281810192909252604090810160002081516060810183528154815260019091015460ff81161515938201939093526101009092046001600160401b031690820152855186908690811061228957612289615039565b6020026020010151836135f59092919063ffffffff16565b8684815181106122b3576122b3615039565b6020026020010181815250506122e4565b808684815181106122d7576122d7615039565b6020026020010181815250505b505060010161210d565b50505092915050565b6066546060906001906002908116036123235760405163840a48d560e01b815260040160405180910390fd5b61232c836112eb565b6123495760405163a5c7c44560e01b815260040160405180910390fd5b61235283611bd7565b15612370576040516311ca333560e31b815260040160405180910390fd5b6001600160a01b038316612397576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b038084166000818152609a6020526040902054909116903314806123ca5750336001600160a01b038216145b806123f157506001600160a01b038181166000908152609960205260409020600101541633145b61240e57604051631e499a2360e11b815260040160405180910390fd5b60008061241a866118ca565b6001600160a01b038089166000818152609a602052604080822080546001600160a01b0319169055519496509294509086169290917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a3336001600160a01b038716146124c357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b81516000036124d4575050506128e0565b81516001600160401b038111156124ed576124ed614743565b604051908082528060200260200182016040528015612516578160200160208202803683370190505b50945060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8785856040518363ffffffff1660e01b8152600401612569929190615230565b600060405180830381865afa158015612586573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ae919081019061511d565b905060005b83518110156128da57604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905086848151811061263657612636615039565b60200260200101518360008151811061265157612651615039565b60200260200101906001600160a01b031690816001600160a01b03168152505061274a60a260008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008987815181106126ad576126ad615039565b6020908102919091018101516001600160a01b0316825281810192909252604090810160002081516060810183528154815260019091015460ff81161515938201939093526101009092046001600160401b031690820152865187908790811061271957612719615039565b602002602001015188878151811061273357612733615039565b60200260200101516135f59092919063ffffffff16565b8260008151811061275d5761275d615039565b60200260200101818152505084848151811061277b5761277b615039565b60200260200101518160008151811061279657612796615039565b60200260200101906001600160401b031690816001600160401b0316815250506127c38b89858585612c1e565b8a85815181106127d5576127d5615039565b602002602001018181525050670de0b6b3a76400006001600160401b031660a260008d6001600160a01b03166001600160a01b03168152602001908152602001600020600089878151811061282c5761282c615039565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600001819055507f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8b88868151811061288f5761288f615039565b602090810291909101810151604080516001600160a01b0394851681529390911691830191909152670de0b6b3a76400009082015260600160405180910390a15050506001016125b3565b50505050505b50919050565b60665460029060049081160361290f5760405163840a48d560e01b815260040160405180910390fd5b6129176137d1565b6129238585858561382a565b611fa5600160c955565b612936336112eb565b1561295457604051633bf2b50360e11b815260040160405180910390fd5b61295d83611bd7565b61297a576040516325ec6c1f60e01b815260040160405180910390fd5b61298633848484613367565b505050565b6060600083516001600160401b038111156129a8576129a8614743565b6040519080825280602002602001820160405280156129db57816020015b60608152602001906001900390816129c65790505b50905060005b8451811015611ddd57612a0d8582815181106129ff576129ff615039565b602002602001015185611d0b565b828281518110612a1f57612a1f615039565b60209081029190910101526001016129e1565b612a3b33611bd7565b612a58576040516325ec6c1f60e01b815260040160405180910390fd5b610e26338261330f565b612a6a613746565b6001600160a01b038116612acf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161107d565b610e26816131c4565b6000612ae2613dd2565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5e91906151b1565b6001600160a01b0316336001600160a01b031614612b8f5760405163794821ff60e01b815260040160405180910390fd5b606654198119606654191614612bb85760405163c61dca5d60e01b815260040160405180910390fd5b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610f09565b6000612bf9613dd2565b60405161190160f01b6020820152602281019190915260428101839052606201611549565b60006001600160a01b038616612c47576040516339b190bb60e11b815260040160405180910390fd5b8351600003612c695760405163796cc52560e01b815260040160405180910390fd5b600084516001600160401b03811115612c8457612c84614743565b604051908082528060200260200182016040528015612cad578160200160208202803683370190505b50905060005b8551811015612fbc576000612cd387838151811061212d5761212d615039565b9050600060a260008b6001600160a01b03166001600160a01b031681526020019081526020016000206000898581518110612d1057612d10615039565b6020908102919091018101516001600160a01b03168252818101929092526040908101600090812082516060810184528154815260019091015460ff81161515948201949094526101009093046001600160401b031691830191909152875191925090612dbc908390899087908110612d8b57612d8b615039565b60200260200101518a8781518110612da557612da5615039565b6020026020010151613eb89092919063ffffffff16565b90506000836001600160a01b031663fe243a178d8c8881518110612de257612de2615039565b60200260200101516040518363ffffffff1660e01b8152600401612e1c9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5d919061549e565b905080821115612e805760405163f020e5b960e01b815260040160405180910390fd5b6001600160a01b038b1615612ecd57612ecd8b8d8c8881518110612ea657612ea6615039565b60200260200101518c8981518110612ec057612ec0615039565b60200260200101516136bd565b612f1483898781518110612ee357612ee3615039565b60200260200101518b8881518110612efd57612efd615039565b6020026020010151613ef59092919063ffffffff16565b868681518110612f2657612f26615039565b602002602001018181525050836001600160a01b031663724af4238d8c8881518110612f5457612f54615039565b6020026020010151856040518463ffffffff1660e01b8152600401612f7b939291906154ea565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b5050505050505050806001019050612cb3565b506001600160a01b0387166000908152609f60205260408120805491829190612fe48361550e565b919050555060006040518060e001604052808a6001600160a01b03168152602001896001600160a01b031681526020018a6001600160a01b031681526020018381526020014263ffffffff168152602001888152602001848152509050600061304c82611536565b6000818152609e602052604090819020805460ff19166001179055519091507f58883f0678ff43a2c049e6a3a7a8b9b0e9062959f3a99192505888193a0c5fed9061309a9083908590615527565b60405180910390a19998505050505050505050565b6001600160a01b0381166130d6576040516339b190bb60e11b815260040160405180910390fd5b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561316057506001600160a01b03821615155b61317d576040516339b190bb60e11b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26131c0826130af565b5050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0380871660009081526098602090815260408083209388168352929052908120805484929061324d908490615201565b92505081905550856001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c868685604051613291939291906154ea565b60405180910390a26001600160a01b03808616600090815260a2602090815260408083209388168352929052206132ca81858585613f20565b80546040517f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f916132fe91899189916154ea565b60405180910390a150505050505050565b6001600160a01b038216600090815260996020526040902081906133338282615560565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611f0e908490615254565b6066546000906001908116036133905760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038085166000908152609960205260409020600101541680158015906133c65750336001600160a01b03821614155b80156133db5750336001600160a01b03861614155b1561348e57428460200151101561340557604051630819bdcd60e01b815260040160405180910390fd5b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561344a57604051630d4c4c9160e21b815260040160405180910390fd5b61345f81611cd2888885888a602001516109ac565b6001600160a01b0381166000908152609c602090815260408083208684529091529020805460ff191660011790555b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ed886118ca565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8789856040518363ffffffff1660e01b8152600401613541929190615230565b600060405180830381865afa15801561355e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613586919081019061511d565b905060005b83518110156135e9576135e1898b8684815181106135ab576135ab615039565b602002602001015160008786815181106135c7576135c7615039565b60200260200101518787815181106112d5576112d5615039565b60010161358b565b50505050505050505050565b600061112e826001600160401b031661362c6136108661405d565b6001600160401b031661362c6136258861407e565b899061409e565b9061409e565b6040805160608101825283548152600184015460ff81161515602083015261010090046001600160401b0390811692820192909252613686918316906136779061405d565b6001600160401b03169061409e565b6001928301805468ffffffffffffffffff19166101006001600160401b03939093169290920260ff19169190911790921790915550565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906136f490849061536c565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051613738939291906154ea565b60405180910390a250505050565b6033546001600160a01b03163314611c205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161107d565b6137b46001600160a01b03841683836140b3565b61298657604051638baa579f60e01b815260040160405180910390fd5b600260c954036138235760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161107d565b600260c955565b61383760a085018561506f565b83149050613858576040516343714afd60e01b815260040160405180910390fd5b613868606085016040860161455d565b6001600160a01b0316336001600160a01b031614613899576040516316110d3560e21b815260040160405180910390fd5b60006138a76105f5866155c3565b6000818152609e602052604090205490915060ff166138d9576040516387c9d21960e01b815260040160405180910390fd5b60006138ee6103ea60a08801608089016145b0565b905060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663843b349f61393160408a0160208b0161455d565b61393e60a08b018b61506f565b866040518563ffffffff1660e01b815260040161395e94939291906155cf565b600060405180830381865afa15801561397b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139a3919081019061511d565b905060005b6139b560a089018961506f565b9050811015613ce15760006139fa6139d060a08b018b61506f565b848181106139e0576139e0615039565b90506020020160208101906139f5919061455d565b613d5f565b90506000613aff60a282613a1160208e018e61455d565b6001600160a01b031681526020810191909152604001600090812090613a3a60a08e018e61506f565b87818110613a4a57613a4a615039565b9050602002016020810190613a5f919061455d565b6001600160a01b03168152602080820192909252604090810160002081516060810183528154815260019091015460ff81161515938201939093526101009092046001600160401b0316908201528551869086908110613ac157613ac1615039565b60200260200101518c8060c00190613ad9919061506f565b87818110613ae957613ae9615039565b9050602002013561410a9092919063ffffffff16565b90508615613bf1576001600160a01b038216632eae418c613b2360208d018d61455d565b613b3060a08e018e61506f565b87818110613b4057613b40615039565b9050602002016020810190613b55919061455d565b8c8c88818110613b6757613b67615039565b9050602002016020810190613b7c919061455d565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b158015613bd457600080fd5b505af1158015613be8573d6000803e3d6000fd5b50505050613cd7565b6001600160a01b03821663c4623ea1613c0d60208d018d61455d565b613c1a60a08e018e61506f565b87818110613c2a57613c2a615039565b9050602002016020810190613c3f919061455d565b8c8c88818110613c5157613c51615039565b9050602002016020810190613c66919061455d565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b158015613cbe57600080fd5b505af1158015613cd2573d6000803e3d6000fd5b505050505b50506001016139a8565b506000838152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906132fe9085815260200190565b6000613d55826001600160401b031661362c856001600160401b03168761413590919063ffffffff16565b61112e908561536c565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014613dab577f0000000000000000000000000000000000000000000000000000000000000000610fdc565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b60007f00000000000000000000000000000000000000000000000000000000000000004614613e935750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600061112e826001600160401b0316613eef613ed38661405d565b6001600160401b0316613eef613ee88861407e565b8990614135565b90614135565b600061112e826001600160401b0316613eef613f108661405d565b87906001600160401b0316614135565b82600003613f90576040805160608101825285548152600186015460ff81161515602083015261010090046001600160401b0390811692820192909252613f8991831690613eef90613f719061405d565b670de0b6b3a7640000906001600160401b0316614135565b8455611102565b6040805160608101825285548152600186015460ff81161515602083015261010090046001600160401b031691810191909152600090613fd2908590846135f5565b90506000613fe08483615201565b6040805160608101825288548152600189015460ff81161515602083015261010090046001600160401b031691810191909152909150600090614052906140269061405d565b6001600160401b0316613eef866001600160401b0316613eef898b61404b9190615201565b8790614135565b875550505050505050565b6000816020015161407657670de0b6b3a7640000610fdc565b506040015190565b80516000901561408f578151610fdc565b670de0b6b3a764000092915050565b60006111318383670de0b6b3a7640000614146565b60008060006140c28585614230565b909250905060008160048111156140db576140db61560b565b1480156140f95750856001600160a01b0316826001600160a01b0316145b80610a2c5750610a2c868686614275565b600061112e826001600160401b031661362c6141258661405d565b87906001600160401b031661409e565b600061113183670de0b6b3a7640000845b60008080600019858709858702925082811083820303915050806000036141805783828161417657614176615621565b0492505050611131565b8084116141c75760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161107d565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008082516041036142665760208301516040840151606085015160001a61425a87828585614361565b9450945050505061426e565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b868660405160240161429f92919061565b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516142dd9190615695565b600060405180830381855afa9150503d8060008114614318576040519150601f19603f3d011682016040523d82523d6000602084013e61431d565b606091505b509150915081801561433157506020815110155b8015610a2c57508051630b135d3f60e11b90614356908301602090810190840161549e565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614398575060009050600361441c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143ec573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166144155760006001925092505061441c565b9150600090505b94509492505050565b6001600160a01b0381168114610e2657600080fd5b8035610fdf81614425565b600080600080600060a0868803121561445d57600080fd5b853561446881614425565b9450602086013561447881614425565b9350604086013561448881614425565b94979396509394606081013594506080013592915050565b60008083601f8401126144b257600080fd5b5081356001600160401b038111156144c957600080fd5b6020830191508360208260051b850101111561426e57600080fd5b600080602083850312156144f757600080fd5b82356001600160401b0381111561450d57600080fd5b614519858286016144a0565b90969095509350505050565b602080825282518282018190526000918401906040840190835b81811015610d6a57835183526020938401939092019160010161453f565b60006020828403121561456f57600080fd5b813561113181614425565b60006020828403121561458c57600080fd5b5035919050565b63ffffffff81168114610e2657600080fd5b8035610fdf81614593565b6000602082840312156145c257600080fd5b813561113181614593565b6000806000606084860312156145e257600080fd5b83356145ed81614425565b925060208401356145fd81614425565b929592945050506040919091013590565b6000806000806080858703121561462457600080fd5b843561462f81614425565b9350602085013561463f81614425565b93969395505050506040820135916060013590565b6000806040838503121561466757600080fd5b823561467281614425565b9150602083013561468281614425565b809150509250929050565b6000606082840312156128e057600080fd5b60008083601f8401126146b157600080fd5b5081356001600160401b038111156146c857600080fd5b60208301915083602082850101111561426e57600080fd5b60008060008060a085870312156146f657600080fd5b614700868661468d565b9350606085013561471081614593565b925060808501356001600160401b0381111561472b57600080fd5b6147378782880161469f565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561477b5761477b614743565b60405290565b604080519081016001600160401b038111828210171561477b5761477b614743565b604051601f8201601f191681016001600160401b03811182821017156147cb576147cb614743565b604052919050565b60006001600160401b038211156147ec576147ec614743565b5060051b60200190565b600082601f83011261480757600080fd5b813561481a614815826147d3565b6147a3565b8082825260208201915060208360051b86010192508583111561483c57600080fd5b602085015b8381101561486257803561485481614425565b835260209283019201614841565b5095945050505050565b600082601f83011261487d57600080fd5b813561488b614815826147d3565b8082825260208201915060208360051b8601019250858311156148ad57600080fd5b602085015b838110156148625780358352602092830192016148b2565b600060e082840312156148dc57600080fd5b6148e4614759565b90506148ef8261443a565b81526148fd6020830161443a565b602082015261490e6040830161443a565b604082015260608281013590820152614929608083016145a5565b608082015260a08201356001600160401b0381111561494757600080fd5b614953848285016147f6565b60a08301525060c08201356001600160401b0381111561497257600080fd5b61497e8482850161486c565b60c08301525092915050565b60006020828403121561499c57600080fd5b81356001600160401b038111156149b257600080fd5b6149be848285016148ca565b949350505050565b6000602082840312156149d857600080fd5b813560ff8116811461113157600080fd5b6001600160401b0381168114610e2657600080fd5b600080600060608486031215614a1357600080fd5b8335614a1e81614425565b9250602084013591506040840135614a35816149e9565b809150509250925092565b600081518084526020840193506020830160005b82811015614a7b5781516001600160a01b0316865260209586019590910190600101614a54565b5093949350505050565b600081518084526020840193506020830160005b82811015614a7b578151865260209586019590910190600101614a99565b604081526000614aca6040830185614a40565b828103602084015261200d8185614a85565b600060408284031215614aee57600080fd5b614af6614781565b905081356001600160401b03811115614b0e57600080fd5b8201601f81018413614b1f57600080fd5b80356001600160401b03811115614b3857614b38614743565b614b4b601f8201601f19166020016147a3565b818152856020838501011115614b6057600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa81614425565b94506020860135614bba81614425565b935060408601356001600160401b03811115614bd557600080fd5b614be188828901614adc565b93505060608601356001600160401b03811115614bfd57600080fd5b614c0988828901614adc565b95989497509295608001359392505050565b60008060408385031215614c2e57600080fd5b8235614c3981614425565b915060208301356001600160401b03811115614c5457600080fd5b614c60858286016147f6565b9150509250929050565b6020815260006111316020830184614a85565b60008060008060008060608789031215614c9657600080fd5b86356001600160401b03811115614cac57600080fd5b614cb889828a016144a0565b90975095505060208701356001600160401b03811115614cd757600080fd5b614ce389828a016144a0565b90955093505060408701356001600160401b03811115614d0257600080fd5b614d0e89828a016144a0565b979a9699509497509295939492505050565b60008060208385031215614d3357600080fd5b82356001600160401b03811115614d4957600080fd5b6145198582860161469f565b60008060008060808587031215614d6b57600080fd5b8435614d7681614425565b93506020850135614d8681614425565b92506040850135614d96816149e9565b91506060850135614da6816149e9565b939692955090935050565b60008060408385031215614dc457600080fd5b8235614dcf81614425565b946020939093013593505050565b60008060008060808587031215614df357600080fd5b8435614dfe81614425565b9350602085013592506040850135614e1581614425565b9396929550929360600135925050565b8015158114610e2657600080fd5b60008060008060608587031215614e4957600080fd5b84356001600160401b03811115614e5f57600080fd5b850160e08188031215614e7157600080fd5b935060208501356001600160401b03811115614e8c57600080fd5b614e98878288016144a0565b9094509250506040850135614da681614e25565b600080600060608486031215614ec157600080fd5b8335614ecc81614425565b925060208401356001600160401b03811115614ee757600080fd5b614ef386828701614adc565b93969395505050506040919091013590565b60008060408385031215614f1857600080fd5b82356001600160401b03811115614f2e57600080fd5b8301601f81018513614f3f57600080fd5b8035614f4d614815826147d3565b8082825260208201915060208360051b850101925087831115614f6f57600080fd5b6020840193505b82841015614f9a578335614f8981614425565b825260209384019390910190614f76565b945050505060208301356001600160401b03811115614c5457600080fd5b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561501157603f19878603018452614ffc858351614a85565b94506020938401939190910190600101614fe0565b50929695505050505050565b60006060828403121561502f57600080fd5b611131838361468d565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261506557600080fd5b9190910192915050565b6000808335601e1984360301811261508657600080fd5b8301803591506001600160401b038211156150a057600080fd5b6020019150600581901b360382131561426e57600080fd5b81835260208301925060008160005b84811015614a7b5781356150da81614425565b6001600160a01b0316865260209586019591909101906001016150c7565b6001600160a01b038416815260406020820181905260009061200d90830184866150b8565b60006020828403121561512f57600080fd5b81516001600160401b0381111561514557600080fd5b8201601f8101841361515657600080fd5b8051615164614815826147d3565b8082825260208201915060208360051b85010192508683111561518657600080fd5b6020840193505b82841015610a2c5783516151a0816149e9565b82526020938401939091019061518d565b6000602082840312156151c357600080fd5b815161113181614425565b6000602082840312156151e057600080fd5b815161113181614e25565b634e487b7160e01b600052601160045260246000fd5b80820180821115611de157611de16151eb565b63ffffffff8181168382160190811115611de157611de16151eb565b6001600160a01b038316815260406020820181905260009061112e90830184614a40565b60608101823561526381614425565b6001600160a01b03168252602083013561527c81614425565b6001600160a01b03166020830152604083013561529881614593565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916153269085018263ffffffff169052565b5060a082015160e060a085015261534060e0850182614a40565b905060c083015184820360c086015261200d8282614a85565b60208152600061113160208301846152da565b81810381811115611de157611de16151eb565b600082601f83011261539057600080fd5b815161539e614815826147d3565b8082825260208201915060208360051b8601019250858311156153c057600080fd5b602085015b838110156148625780518352602092830192016153c5565b600080604083850312156153f057600080fd5b82516001600160401b0381111561540657600080fd5b8301601f8101851361541757600080fd5b8051615425614815826147d3565b8082825260208201915060208360051b85010192508783111561544757600080fd5b6020840193505b8284101561547257835161546181614425565b82526020938401939091019061544e565b8095505050505060208301516001600160401b0381111561549257600080fd5b614c608582860161537f565b6000602082840312156154b057600080fd5b5051919050565b6000823560de1983360301811261506557600080fd5b6000602082840312156154df57600080fd5b813561113181614e25565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018201615520576155206151eb565b5060010190565b82815260406020820152600061112e60408301846152da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561556b81614425565b6155758183615540565b5060018101602083013561558881614425565b6155928183615540565b5060408301356155a181614593565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000610fdc36836148ca565b6001600160a01b03851681526060602082018190526000906155f490830185876150b8565b905063ffffffff8316604083015295945050505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60005b8381101561565257818101518382015260200161563a565b50506000910152565b8281526040602082015260008251806040840152615680816060850160208701615637565b601f01601f1916919091016060019392505050565b6000825161506581846020870161563756fea264697066735822122053ba17f618b4fa8696f0523d79fbad1ae8645f343128253aa8f746b0c8bd7e5f64736f6c634300081b0033", } // ContractDelegationManagerABI is the input ABI used to generate the binding from. @@ -75,7 +75,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, _strategyManager common.Address, _slasher common.Address, _eigenPodManager common.Address) (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, _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 +84,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, _strategyManager, _slasher, _eigenPodManager) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractDelegationManagerBin), backend, _avsDirectory, _strategyManager, _eigenPodManager, _allocationManager, _MIN_WITHDRAWAL_DELAY) if err != nil { return common.Address{}, nil, nil, err } @@ -102,23 +102,27 @@ type ContractDelegationManagerMethods interface { type ContractDelegationManagerCalls interface { DELEGATIONAPPROVALTYPEHASH(opts *bind.CallOpts) ([32]byte, error) - DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) + LEGACYMINWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) - MAXSTAKEROPTOUTWINDOWBLOCKS(opts *bind.CallOpts) (*big.Int, error) + LEGACYWITHDRAWALCHECKVALUE(opts *bind.CallOpts) (uint32, error) - MAXWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) + MINWITHDRAWALDELAY(opts *bind.CallOpts) (uint32, error) STAKERDELEGATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) + AllocationManager(opts *bind.CallOpts) (common.Address, error) + + AvsDirectory(opts *bind.CallOpts) (common.Address, error) + BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) CalculateCurrentStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) - CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) + CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, approver common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) - CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) + CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, nonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) - CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) + CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) CumulativeWithdrawalsQueued(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) @@ -132,19 +136,21 @@ type ContractDelegationManagerCalls interface { EigenPodManager(opts *bind.CallOpts) (common.Address, error) - GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) + GetCompletableTimestamp(opts *bind.CallOpts, startTimestamp uint32) (uint32, 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) - GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) + GetOperatorsShares(opts *bind.CallOpts, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) + + GetWithdrawableShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address) ([]*big.Int, error) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) - MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) - - OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) + OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerTypesOperatorDetails, error) OperatorShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) @@ -158,51 +164,49 @@ type ContractDelegationManagerCalls interface { PendingWithdrawals(opts *bind.CallOpts, arg0 [32]byte) (bool, error) - Slasher(opts *bind.CallOpts) (common.Address, error) - StakerNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) - StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) + StakerScalingFactor(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (struct { + DepositScalingFactor *big.Int + IsBeaconChainScalingFactorSet bool + BeaconChainScalingFactor uint64 + }, error) StrategyManager(opts *bind.CallOpts) (common.Address, error) - - StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) } // ContractDelegationManagerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractDelegationManagerTransacts interface { - CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) + CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) + + CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) - CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) + DecreaseBeaconChainScalingFactor(opts *bind.TransactOpts, staker common.Address, existingDepositShares *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) - DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) + DecreaseOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, previousTotalMagnitude uint64, newTotalMagnitude uint64) (*types.Transaction, error) DelegateTo(opts *bind.TransactOpts, operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) DelegateToBySignature(opts *bind.TransactOpts, staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) - IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) + IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, existingDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) - Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _minWithdrawalDelayBlocks *big.Int, _strategies []common.Address, _withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) + Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) - ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) + ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) - QueueWithdrawals(opts *bind.TransactOpts, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) + QueueWithdrawals(opts *bind.TransactOpts, params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) - RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) + RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerTypesOperatorDetails, allocationDelay uint32, metadataURI string) (*types.Transaction, error) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) - SetMinWithdrawalDelayBlocks(opts *bind.TransactOpts, newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) - SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) - SetStrategyWithdrawalDelayBlocks(opts *bind.TransactOpts, strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) - TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) Undelegate(opts *bind.TransactOpts, staker common.Address) (*types.Transaction, error) @@ -214,14 +218,18 @@ type ContractDelegationManagerTransacts interface { // 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) + + FilterDepositScalingFactorUpdated(opts *bind.FilterOpts) (*ContractDelegationManagerDepositScalingFactorUpdatedIterator, error) + WatchDepositScalingFactorUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerDepositScalingFactorUpdated) (event.Subscription, error) + ParseDepositScalingFactorUpdated(log types.Log) (*ContractDelegationManagerDepositScalingFactorUpdated, error) + FilterInitialized(opts *bind.FilterOpts) (*ContractDelegationManagerInitializedIterator, error) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerInitialized) (event.Subscription, error) ParseInitialized(log types.Log) (*ContractDelegationManagerInitialized, error) - FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator, error) - WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerMinWithdrawalDelayBlocksSet) (event.Subscription, error) - ParseMinWithdrawalDelayBlocksSet(log types.Log) (*ContractDelegationManagerMinWithdrawalDelayBlocksSet, 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) @@ -254,6 +262,14 @@ type ContractDelegationManagerFilters interface { WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerPauserRegistrySet) (event.Subscription, error) ParsePauserRegistrySet(log types.Log) (*ContractDelegationManagerPauserRegistrySet, error) + FilterSlashingWithdrawalCompleted(opts *bind.FilterOpts) (*ContractDelegationManagerSlashingWithdrawalCompletedIterator, error) + WatchSlashingWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerSlashingWithdrawalCompleted) (event.Subscription, error) + ParseSlashingWithdrawalCompleted(log types.Log) (*ContractDelegationManagerSlashingWithdrawalCompleted, error) + + FilterSlashingWithdrawalQueued(opts *bind.FilterOpts) (*ContractDelegationManagerSlashingWithdrawalQueuedIterator, error) + WatchSlashingWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerSlashingWithdrawalQueued) (event.Subscription, error) + ParseSlashingWithdrawalQueued(log types.Log) (*ContractDelegationManagerSlashingWithdrawalQueued, error) + FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerDelegatedIterator, error) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) ParseStakerDelegated(log types.Log) (*ContractDelegationManagerStakerDelegated, error) @@ -266,21 +282,9 @@ type ContractDelegationManagerFilters interface { WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) ParseStakerUndelegated(log types.Log) (*ContractDelegationManagerStakerUndelegated, error) - FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator, error) - WatchStrategyWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStrategyWithdrawalDelayBlocksSet) (event.Subscription, error) - ParseStrategyWithdrawalDelayBlocksSet(log types.Log) (*ContractDelegationManagerStrategyWithdrawalDelayBlocksSet, error) - FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*ContractDelegationManagerUnpausedIterator, error) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerUnpaused, account []common.Address) (event.Subscription, error) ParseUnpaused(log types.Log) (*ContractDelegationManagerUnpaused, error) - - FilterWithdrawalCompleted(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalCompletedIterator, error) - WatchWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalCompleted) (event.Subscription, error) - ParseWithdrawalCompleted(log types.Log) (*ContractDelegationManagerWithdrawalCompleted, error) - - FilterWithdrawalQueued(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalQueuedIterator, error) - WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalQueued) (event.Subscription, error) - ParseWithdrawalQueued(log types.Log) (*ContractDelegationManagerWithdrawalQueued, error) } // ContractDelegationManager is an auto generated Go binding around an Ethereum contract. @@ -468,97 +472,97 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DELEGA return _ContractDelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_ContractDelegationManager.CallOpts) } -// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// LEGACYMINWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xcb00387b. // -// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function LEGACY_MIN_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCaller) LEGACYMINWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "DOMAIN_TYPEHASH") + err := _ContractDelegationManager.contract.Call(opts, &out, "LEGACY_MIN_WITHDRAWAL_DELAY_BLOCKS") if err != nil { - return *new([32]byte), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// LEGACYMINWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xcb00387b. // -// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerSession) DOMAINTYPEHASH() ([32]byte, error) { - return _ContractDelegationManager.Contract.DOMAINTYPEHASH(&_ContractDelegationManager.CallOpts) +// Solidity: function LEGACY_MIN_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerSession) LEGACYMINWITHDRAWALDELAYBLOCKS() (*big.Int, error) { + return _ContractDelegationManager.Contract.LEGACYMINWITHDRAWALDELAYBLOCKS(&_ContractDelegationManager.CallOpts) } -// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// LEGACYMINWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xcb00387b. // -// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) { - return _ContractDelegationManager.Contract.DOMAINTYPEHASH(&_ContractDelegationManager.CallOpts) +// Solidity: function LEGACY_MIN_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) LEGACYMINWITHDRAWALDELAYBLOCKS() (*big.Int, error) { + return _ContractDelegationManager.Contract.LEGACYMINWITHDRAWALDELAYBLOCKS(&_ContractDelegationManager.CallOpts) } -// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61. +// LEGACYWITHDRAWALCHECKVALUE is a free data retrieval call binding the contract method 0xcebc04ef. // -// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCaller) MAXSTAKEROPTOUTWINDOWBLOCKS(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function LEGACY_WITHDRAWAL_CHECK_VALUE() view returns(uint32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) LEGACYWITHDRAWALCHECKVALUE(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS") + err := _ContractDelegationManager.contract.Call(opts, &out, "LEGACY_WITHDRAWAL_CHECK_VALUE") if err != nil { - return *new(*big.Int), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61. +// LEGACYWITHDRAWALCHECKVALUE is a free data retrieval call binding the contract method 0xcebc04ef. // -// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerSession) MAXSTAKEROPTOUTWINDOWBLOCKS() (*big.Int, error) { - return _ContractDelegationManager.Contract.MAXSTAKEROPTOUTWINDOWBLOCKS(&_ContractDelegationManager.CallOpts) +// Solidity: function LEGACY_WITHDRAWAL_CHECK_VALUE() view returns(uint32) +func (_ContractDelegationManager *ContractDelegationManagerSession) LEGACYWITHDRAWALCHECKVALUE() (uint32, error) { + return _ContractDelegationManager.Contract.LEGACYWITHDRAWALCHECKVALUE(&_ContractDelegationManager.CallOpts) } -// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61. +// LEGACYWITHDRAWALCHECKVALUE is a free data retrieval call binding the contract method 0xcebc04ef. // -// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) MAXSTAKEROPTOUTWINDOWBLOCKS() (*big.Int, error) { - return _ContractDelegationManager.Contract.MAXSTAKEROPTOUTWINDOWBLOCKS(&_ContractDelegationManager.CallOpts) +// Solidity: function LEGACY_WITHDRAWAL_CHECK_VALUE() view returns(uint32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) LEGACYWITHDRAWALCHECKVALUE() (uint32, error) { + return _ContractDelegationManager.Contract.LEGACYWITHDRAWALCHECKVALUE(&_ContractDelegationManager.CallOpts) } -// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// MINWITHDRAWALDELAY is a free data retrieval call binding the contract method 0x4a5f2b5d. // -// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCaller) MAXWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function MIN_WITHDRAWAL_DELAY() view returns(uint32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) MINWITHDRAWALDELAY(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "MAX_WITHDRAWAL_DELAY_BLOCKS") + err := _ContractDelegationManager.contract.Call(opts, &out, "MIN_WITHDRAWAL_DELAY") if err != nil { - return *new(*big.Int), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// MINWITHDRAWALDELAY is a free data retrieval call binding the contract method 0x4a5f2b5d. // -// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) { - return _ContractDelegationManager.Contract.MAXWITHDRAWALDELAYBLOCKS(&_ContractDelegationManager.CallOpts) +// Solidity: function MIN_WITHDRAWAL_DELAY() view returns(uint32) +func (_ContractDelegationManager *ContractDelegationManagerSession) MINWITHDRAWALDELAY() (uint32, error) { + return _ContractDelegationManager.Contract.MINWITHDRAWALDELAY(&_ContractDelegationManager.CallOpts) } -// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// MINWITHDRAWALDELAY is a free data retrieval call binding the contract method 0x4a5f2b5d. // -// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) { - return _ContractDelegationManager.Contract.MAXWITHDRAWALDELAYBLOCKS(&_ContractDelegationManager.CallOpts) +// Solidity: function MIN_WITHDRAWAL_DELAY() view returns(uint32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) MINWITHDRAWALDELAY() (uint32, error) { + return _ContractDelegationManager.Contract.MINWITHDRAWALDELAY(&_ContractDelegationManager.CallOpts) } // STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382. @@ -592,6 +596,68 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) STAKER return _ContractDelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_ContractDelegationManager.CallOpts) } +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "allocationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) AllocationManager() (common.Address, error) { + return _ContractDelegationManager.Contract.AllocationManager(&_ContractDelegationManager.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) AllocationManager() (common.Address, error) { + return _ContractDelegationManager.Contract.AllocationManager(&_ContractDelegationManager.CallOpts) +} + +// AvsDirectory is a free data retrieval call binding the contract method 0x6b3aa72e. +// +// Solidity: function avsDirectory() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCaller) AvsDirectory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "avsDirectory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AvsDirectory is a free data retrieval call binding the contract method 0x6b3aa72e. +// +// Solidity: function avsDirectory() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerSession) AvsDirectory() (common.Address, error) { + return _ContractDelegationManager.Contract.AvsDirectory(&_ContractDelegationManager.CallOpts) +} + +// AvsDirectory is a free data retrieval call binding the contract method 0x6b3aa72e. +// +// Solidity: function avsDirectory() view returns(address) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) AvsDirectory() (common.Address, error) { + return _ContractDelegationManager.Contract.AvsDirectory(&_ContractDelegationManager.CallOpts) +} + // BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. // // Solidity: function beaconChainETHStrategy() view returns(address) @@ -656,10 +722,10 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Calcul // CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. // -// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, approver common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, _delegationApprover, approverSalt, expiry) + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, approver, approverSalt, expiry) if err != nil { return *new([32]byte), err @@ -673,24 +739,24 @@ func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateDele // CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. // -// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { - return _ContractDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, approver common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, approver, approverSalt, expiry) } // CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. // -// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { - return _ContractDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, approver common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_ContractDelegationManager.CallOpts, staker, operator, approver, approverSalt, expiry) } // CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. // -// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 nonce, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, nonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry) + err := _ContractDelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, nonce, operator, expiry) if err != nil { return *new([32]byte), err @@ -704,22 +770,22 @@ func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateStak // CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. // -// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { - return _ContractDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, _stakerNonce, operator, expiry) +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 nonce, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateStakerDelegationDigestHash(staker common.Address, nonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, nonce, operator, expiry) } // CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. // -// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { - return _ContractDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, _stakerNonce, operator, expiry) +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 nonce, address operator, uint256 expiry) view returns(bytes32) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateStakerDelegationDigestHash(staker common.Address, nonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + return _ContractDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_ContractDelegationManager.CallOpts, staker, nonce, operator, expiry) } // CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. // // Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { +func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) { var out []interface{} err := _ContractDelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal) @@ -736,14 +802,14 @@ func (_ContractDelegationManager *ContractDelegationManagerCaller) CalculateWith // CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. // // Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { +func (_ContractDelegationManager *ContractDelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) { return _ContractDelegationManager.Contract.CalculateWithdrawalRoot(&_ContractDelegationManager.CallOpts, withdrawal) } // CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. // // Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) { return _ContractDelegationManager.Contract.CalculateWithdrawalRoot(&_ContractDelegationManager.CallOpts, withdrawal) } @@ -933,12 +999,43 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) EigenP return _ContractDelegationManager.Contract.EigenPodManager(&_ContractDelegationManager.CallOpts) } -// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// GetCompletableTimestamp is a free data retrieval call binding the contract method 0x15c4a288. // -// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) -func (_ContractDelegationManager *ContractDelegationManagerCaller) GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { +// Solidity: function getCompletableTimestamp(uint32 startTimestamp) view returns(uint32 completableTimestamp) +func (_ContractDelegationManager *ContractDelegationManagerCaller) GetCompletableTimestamp(opts *bind.CallOpts, startTimestamp uint32) (uint32, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "getDelegatableShares", staker) + err := _ContractDelegationManager.contract.Call(opts, &out, "getCompletableTimestamp", startTimestamp) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// GetCompletableTimestamp is a free data retrieval call binding the contract method 0x15c4a288. +// +// Solidity: function getCompletableTimestamp(uint32 startTimestamp) view returns(uint32 completableTimestamp) +func (_ContractDelegationManager *ContractDelegationManagerSession) GetCompletableTimestamp(startTimestamp uint32) (uint32, error) { + return _ContractDelegationManager.Contract.GetCompletableTimestamp(&_ContractDelegationManager.CallOpts, startTimestamp) +} + +// GetCompletableTimestamp is a free data retrieval call binding the contract method 0x15c4a288. +// +// Solidity: function getCompletableTimestamp(uint32 startTimestamp) view returns(uint32 completableTimestamp) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetCompletableTimestamp(startTimestamp uint32) (uint32, error) { + return _ContractDelegationManager.Contract.GetCompletableTimestamp(&_ContractDelegationManager.CallOpts, startTimestamp) +} + +// GetDepositedShares is a free data retrieval call binding the contract method 0x66d5ba93. +// +// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[]) +func (_ContractDelegationManager *ContractDelegationManagerCaller) GetDepositedShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "getDepositedShares", staker) if err != nil { return *new([]common.Address), *new([]*big.Int), err @@ -951,18 +1048,18 @@ func (_ContractDelegationManager *ContractDelegationManagerCaller) GetDelegatabl } -// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// GetDepositedShares is a free data retrieval call binding the contract method 0x66d5ba93. // -// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) -func (_ContractDelegationManager *ContractDelegationManagerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) { - return _ContractDelegationManager.Contract.GetDelegatableShares(&_ContractDelegationManager.CallOpts, staker) +// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[]) +func (_ContractDelegationManager *ContractDelegationManagerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) { + return _ContractDelegationManager.Contract.GetDepositedShares(&_ContractDelegationManager.CallOpts, staker) } -// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// GetDepositedShares is a free data retrieval call binding the contract method 0x66d5ba93. // -// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) { - return _ContractDelegationManager.Contract.GetDelegatableShares(&_ContractDelegationManager.CallOpts, staker) +// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[]) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) { + return _ContractDelegationManager.Contract.GetDepositedShares(&_ContractDelegationManager.CallOpts, staker) } // GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. @@ -996,35 +1093,66 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetOpe return _ContractDelegationManager.Contract.GetOperatorShares(&_ContractDelegationManager.CallOpts, operator, strategies) } -// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// GetOperatorsShares is a free data retrieval call binding the contract method 0xf0e0e676. // -// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) { +// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][]) +func (_ContractDelegationManager *ContractDelegationManagerCaller) GetOperatorsShares(opts *bind.CallOpts, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "getWithdrawalDelay", strategies) + err := _ContractDelegationManager.contract.Call(opts, &out, "getOperatorsShares", operators, strategies) if err != nil { - return *new(*big.Int), err + return *new([][]*big.Int), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int) + + return out0, err + +} + +// GetOperatorsShares is a free data retrieval call binding the contract method 0xf0e0e676. +// +// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][]) +func (_ContractDelegationManager *ContractDelegationManagerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) { + return _ContractDelegationManager.Contract.GetOperatorsShares(&_ContractDelegationManager.CallOpts, operators, strategies) +} + +// GetOperatorsShares is a free data retrieval call binding the contract method 0xf0e0e676. +// +// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][]) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) { + return _ContractDelegationManager.Contract.GetOperatorsShares(&_ContractDelegationManager.CallOpts, operators, strategies) +} + +// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac. +// +// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares) +func (_ContractDelegationManager *ContractDelegationManagerCaller) GetWithdrawableShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _ContractDelegationManager.contract.Call(opts, &out, "getWithdrawableShares", staker, strategies) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err } -// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac. // -// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) { - return _ContractDelegationManager.Contract.GetWithdrawalDelay(&_ContractDelegationManager.CallOpts, strategies) +// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares) +func (_ContractDelegationManager *ContractDelegationManagerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) ([]*big.Int, error) { + return _ContractDelegationManager.Contract.GetWithdrawableShares(&_ContractDelegationManager.CallOpts, staker, strategies) } -// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac. // -// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) { - return _ContractDelegationManager.Contract.GetWithdrawalDelay(&_ContractDelegationManager.CallOpts, strategies) +// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) ([]*big.Int, error) { + return _ContractDelegationManager.Contract.GetWithdrawableShares(&_ContractDelegationManager.CallOpts, staker, strategies) } // IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. @@ -1089,49 +1217,18 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) IsOper return _ContractDelegationManager.Contract.IsOperator(&_ContractDelegationManager.CallOpts, operator) } -// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. -// -// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "minWithdrawalDelayBlocks") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. -// -// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerSession) MinWithdrawalDelayBlocks() (*big.Int, error) { - return _ContractDelegationManager.Contract.MinWithdrawalDelayBlocks(&_ContractDelegationManager.CallOpts) -} - -// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. -// -// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) MinWithdrawalDelayBlocks() (*big.Int, error) { - return _ContractDelegationManager.Contract.MinWithdrawalDelayBlocks(&_ContractDelegationManager.CallOpts) -} - // OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. // // Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) -func (_ContractDelegationManager *ContractDelegationManagerCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) { +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(IDelegationManagerOperatorDetails), err + return *new(IDelegationManagerTypesOperatorDetails), err } - out0 := *abi.ConvertType(out[0], new(IDelegationManagerOperatorDetails)).(*IDelegationManagerOperatorDetails) + out0 := *abi.ConvertType(out[0], new(IDelegationManagerTypesOperatorDetails)).(*IDelegationManagerTypesOperatorDetails) return out0, err @@ -1140,14 +1237,14 @@ func (_ContractDelegationManager *ContractDelegationManagerCaller) OperatorDetai // OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. // // Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) -func (_ContractDelegationManager *ContractDelegationManagerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { +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) (IDelegationManagerOperatorDetails, error) { +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerTypesOperatorDetails, error) { return _ContractDelegationManager.Contract.OperatorDetails(&_ContractDelegationManager.CallOpts, operator) } @@ -1337,37 +1434,6 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Pendin return _ContractDelegationManager.Contract.PendingWithdrawals(&_ContractDelegationManager.CallOpts, arg0) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractDelegationManager *ContractDelegationManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "slasher") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractDelegationManager *ContractDelegationManagerSession) Slasher() (common.Address, error) { - return _ContractDelegationManager.Contract.Slasher(&_ContractDelegationManager.CallOpts) -} - -// Slasher is a free data retrieval call binding the contract method 0xb1344271. -// -// Solidity: function slasher() view returns(address) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Slasher() (common.Address, error) { - return _ContractDelegationManager.Contract.Slasher(&_ContractDelegationManager.CallOpts) -} - // StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. // // Solidity: function stakerNonce(address ) view returns(uint256) @@ -1399,35 +1465,54 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Staker return _ContractDelegationManager.Contract.StakerNonce(&_ContractDelegationManager.CallOpts, arg0) } -// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// StakerScalingFactor is a free data retrieval call binding the contract method 0x457c6070. // -// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { +// Solidity: function stakerScalingFactor(address , address ) view returns(uint256 depositScalingFactor, bool isBeaconChainScalingFactorSet, uint64 beaconChainScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerCaller) StakerScalingFactor(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (struct { + DepositScalingFactor *big.Int + IsBeaconChainScalingFactorSet bool + BeaconChainScalingFactor uint64 +}, error) { var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator) + err := _ContractDelegationManager.contract.Call(opts, &out, "stakerScalingFactor", arg0, arg1) + outstruct := new(struct { + DepositScalingFactor *big.Int + IsBeaconChainScalingFactorSet bool + BeaconChainScalingFactor uint64 + }) if err != nil { - return *new(*big.Int), err + return *outstruct, err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.DepositScalingFactor = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.IsBeaconChainScalingFactorSet = *abi.ConvertType(out[1], new(bool)).(*bool) + outstruct.BeaconChainScalingFactor = *abi.ConvertType(out[2], new(uint64)).(*uint64) - return out0, err + return *outstruct, err } -// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// StakerScalingFactor is a free data retrieval call binding the contract method 0x457c6070. // -// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { - return _ContractDelegationManager.Contract.StakerOptOutWindowBlocks(&_ContractDelegationManager.CallOpts, operator) +// Solidity: function stakerScalingFactor(address , address ) view returns(uint256 depositScalingFactor, bool isBeaconChainScalingFactorSet, uint64 beaconChainScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerSession) StakerScalingFactor(arg0 common.Address, arg1 common.Address) (struct { + DepositScalingFactor *big.Int + IsBeaconChainScalingFactorSet bool + BeaconChainScalingFactor uint64 +}, error) { + return _ContractDelegationManager.Contract.StakerScalingFactor(&_ContractDelegationManager.CallOpts, arg0, arg1) } -// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// StakerScalingFactor is a free data retrieval call binding the contract method 0x457c6070. // -// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { - return _ContractDelegationManager.Contract.StakerOptOutWindowBlocks(&_ContractDelegationManager.CallOpts, operator) +// Solidity: function stakerScalingFactor(address , address ) view returns(uint256 depositScalingFactor, bool isBeaconChainScalingFactorSet, uint64 beaconChainScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerCallerSession) StakerScalingFactor(arg0 common.Address, arg1 common.Address) (struct { + DepositScalingFactor *big.Int + IsBeaconChainScalingFactorSet bool + BeaconChainScalingFactor uint64 +}, error) { + return _ContractDelegationManager.Contract.StakerScalingFactor(&_ContractDelegationManager.CallOpts, arg0, arg1) } // StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. @@ -1461,98 +1546,88 @@ func (_ContractDelegationManager *ContractDelegationManagerCallerSession) Strate return _ContractDelegationManager.Contract.StrategyManager(&_ContractDelegationManager.CallOpts) } -// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90. // -// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCaller) StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _ContractDelegationManager.contract.Call(opts, &out, "strategyWithdrawalDelayBlocks", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - +// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns() +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) } -// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90. // -// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) { - return _ContractDelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_ContractDelegationManager.CallOpts, arg0) +// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens) } -// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90. // -// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256) -func (_ContractDelegationManager *ContractDelegationManagerCallerSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) { - return _ContractDelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_ContractDelegationManager.CallOpts, arg0) +// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43. // -// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, middlewareTimesIndex, receiveAsTokens) +// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43. // -// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens) +// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed. +// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43. // -// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawal(&_ContractDelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens) +// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens) } -// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396. +// DecreaseBeaconChainScalingFactor is a paid mutator transaction binding the contract method 0x5d9aed23. // -// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens) +// 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) } -// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396. +// DecreaseBeaconChainScalingFactor is a paid mutator transaction binding the contract method 0x5d9aed23. // -// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens) +// 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) } -// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396. +// DecreaseBeaconChainScalingFactor is a paid mutator transaction binding the contract method 0x5d9aed23. // -// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.CompleteQueuedWithdrawals(&_ContractDelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens) +// 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) } -// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// DecreaseOperatorShares is a paid mutator transaction binding the contract method 0xa57ab10b. // -// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, strategy, shares) +// Solidity: function decreaseOperatorShares(address operator, address strategy, uint64 previousTotalMagnitude, uint64 newTotalMagnitude) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) DecreaseOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, previousTotalMagnitude uint64, newTotalMagnitude uint64) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "decreaseOperatorShares", operator, strategy, previousTotalMagnitude, newTotalMagnitude) } -// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// DecreaseOperatorShares is a paid mutator transaction binding the contract method 0xa57ab10b. // -// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.DecreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +// Solidity: function decreaseOperatorShares(address operator, address strategy, uint64 previousTotalMagnitude, uint64 newTotalMagnitude) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) DecreaseOperatorShares(operator common.Address, strategy common.Address, previousTotalMagnitude uint64, newTotalMagnitude uint64) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DecreaseOperatorShares(&_ContractDelegationManager.TransactOpts, operator, strategy, previousTotalMagnitude, newTotalMagnitude) } -// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// DecreaseOperatorShares is a paid mutator transaction binding the contract method 0xa57ab10b. // -// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.DecreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +// Solidity: function decreaseOperatorShares(address operator, address strategy, uint64 previousTotalMagnitude, uint64 newTotalMagnitude) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) DecreaseOperatorShares(operator common.Address, strategy common.Address, previousTotalMagnitude uint64, newTotalMagnitude uint64) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.DecreaseOperatorShares(&_ContractDelegationManager.TransactOpts, operator, strategy, previousTotalMagnitude, newTotalMagnitude) } // DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. @@ -1597,66 +1672,66 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) De return _ContractDelegationManager.Contract.DelegateToBySignature(&_ContractDelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt) } -// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2. // -// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, shares) +// 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) } -// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2. // -// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +// 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) } -// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2. // -// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.IncreaseDelegatedShares(&_ContractDelegationManager.TransactOpts, staker, strategy, shares) +// 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) } -// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4. +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. // -// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] _strategies, uint256[] _withdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _minWithdrawalDelayBlocks *big.Int, _strategies []common.Address, _withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus, _minWithdrawalDelayBlocks, _strategies, _withdrawalDelayBlocks) +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus) } -// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4. +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. // -// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] _strategies, uint256[] _withdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _minWithdrawalDelayBlocks *big.Int, _strategies []common.Address, _withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _minWithdrawalDelayBlocks, _strategies, _withdrawalDelayBlocks) +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus) } -// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4. +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. // -// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] _strategies, uint256[] _withdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _minWithdrawalDelayBlocks *big.Int, _strategies []common.Address, _withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _minWithdrawalDelayBlocks, _strategies, _withdrawalDelayBlocks) +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.Initialize(&_ContractDelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus) } // ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. // // Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { +func (_ContractDelegationManager *ContractDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) { return _ContractDelegationManager.contract.Transact(opts, "modifyOperatorDetails", newOperatorDetails) } // ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. // // Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { +func (_ContractDelegationManager *ContractDelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) { return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, newOperatorDetails) } // ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. // // Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerTypesOperatorDetails) (*types.Transaction, error) { return _ContractDelegationManager.Contract.ModifyOperatorDetails(&_ContractDelegationManager.TransactOpts, newOperatorDetails) } @@ -1704,44 +1779,44 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Pa // QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02. // -// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[]) -func (_ContractDelegationManager *ContractDelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "queueWithdrawals", queuedWithdrawalParams) +// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[]) +func (_ContractDelegationManager *ContractDelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) { + return _ContractDelegationManager.contract.Transact(opts, "queueWithdrawals", params) } // QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02. // -// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[]) -func (_ContractDelegationManager *ContractDelegationManagerSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, queuedWithdrawalParams) +// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[]) +func (_ContractDelegationManager *ContractDelegationManagerSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, params) } // QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02. // -// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[]) -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, queuedWithdrawalParams) +// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[]) +func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) { + return _ContractDelegationManager.Contract.QueueWithdrawals(&_ContractDelegationManager.TransactOpts, params) } -// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x49730060. // -// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "registerAsOperator", registeringOperatorDetails, metadataURI) +// 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) } -// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x49730060. // -// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, registeringOperatorDetails, metadataURI) +// 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) } -// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x49730060. // -// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.RegisterAsOperator(&_ContractDelegationManager.TransactOpts, registeringOperatorDetails, metadataURI) +// 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) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -1765,27 +1840,6 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Re return _ContractDelegationManager.Contract.RenounceOwnership(&_ContractDelegationManager.TransactOpts) } -// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10. -// -// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) SetMinWithdrawalDelayBlocks(opts *bind.TransactOpts, newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "setMinWithdrawalDelayBlocks", newMinWithdrawalDelayBlocks) -} - -// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10. -// -// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.SetMinWithdrawalDelayBlocks(&_ContractDelegationManager.TransactOpts, newMinWithdrawalDelayBlocks) -} - -// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10. -// -// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.SetMinWithdrawalDelayBlocks(&_ContractDelegationManager.TransactOpts, newMinWithdrawalDelayBlocks) -} - // SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. // // Solidity: function setPauserRegistry(address newPauserRegistry) returns() @@ -1807,27 +1861,6 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Se return _ContractDelegationManager.Contract.SetPauserRegistry(&_ContractDelegationManager.TransactOpts, newPauserRegistry) } -// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02. -// -// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactor) SetStrategyWithdrawalDelayBlocks(opts *bind.TransactOpts, strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.contract.Transact(opts, "setStrategyWithdrawalDelayBlocks", strategies, withdrawalDelayBlocks) -} - -// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02. -// -// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.SetStrategyWithdrawalDelayBlocks(&_ContractDelegationManager.TransactOpts, strategies, withdrawalDelayBlocks) -} - -// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02. -// -// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns() -func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) { - return _ContractDelegationManager.Contract.SetStrategyWithdrawalDelayBlocks(&_ContractDelegationManager.TransactOpts, strategies, withdrawalDelayBlocks) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -1912,9 +1945,9 @@ func (_ContractDelegationManager *ContractDelegationManagerTransactorSession) Up return _ContractDelegationManager.Contract.UpdateOperatorMetadataURI(&_ContractDelegationManager.TransactOpts, metadataURI) } -// ContractDelegationManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractDelegationManager contract. -type ContractDelegationManagerInitializedIterator struct { - Event *ContractDelegationManagerInitialized // Event containing the contract specifics and raw log +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1928,7 +1961,7 @@ type ContractDelegationManagerInitializedIterator 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 *ContractDelegationManagerInitializedIterator) Next() bool { +func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1937,7 +1970,7 @@ func (it *ContractDelegationManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerInitialized) + it.Event = new(ContractDelegationManagerBeaconChainScalingFactorDecreased) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1952,7 +1985,7 @@ func (it *ContractDelegationManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerInitialized) + it.Event = new(ContractDelegationManagerBeaconChainScalingFactorDecreased) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1968,41 +2001,42 @@ func (it *ContractDelegationManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerInitializedIterator) Error() error { +func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerInitializedIterator) Close() error { +func (it *ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerInitialized represents a Initialized event raised by the ContractDelegationManager contract. -type ContractDelegationManagerInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos +// 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 } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// FilterBeaconChainScalingFactorDecreased is a free log retrieval operation binding the contract event 0xddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd. // -// Solidity: event Initialized(uint8 version) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractDelegationManagerInitializedIterator, error) { +// Solidity: event BeaconChainScalingFactorDecreased(address staker, uint64 newBeaconChainScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterBeaconChainScalingFactorDecreased(opts *bind.FilterOpts) (*ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "BeaconChainScalingFactorDecreased") if err != nil { return nil, err } - return &ContractDelegationManagerInitializedIterator{contract: _ContractDelegationManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &ContractDelegationManagerBeaconChainScalingFactorDecreasedIterator{contract: _ContractDelegationManager.contract, event: "BeaconChainScalingFactorDecreased", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// WatchBeaconChainScalingFactorDecreased is a free log subscription operation binding the contract event 0xddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd. // -// Solidity: event Initialized(uint8 version) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerInitialized) (event.Subscription, error) { +// Solidity: event BeaconChainScalingFactorDecreased(address staker, uint64 newBeaconChainScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchBeaconChainScalingFactorDecreased(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerBeaconChainScalingFactorDecreased) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "BeaconChainScalingFactorDecreased") if err != nil { return nil, err } @@ -2012,8 +2046,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchInitia select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerInitialized) - if err := _ContractDelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(ContractDelegationManagerBeaconChainScalingFactorDecreased) + if err := _ContractDelegationManager.contract.UnpackLog(event, "BeaconChainScalingFactorDecreased", log); err != nil { return err } event.Raw = log @@ -2034,21 +2068,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchInitia }), nil } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// ParseBeaconChainScalingFactorDecreased is a log parse operation binding the contract event 0xddf935ec8825c7afee6a15d4731e28963ee96dfcb85d0a1e794b43318bbca4fd. // -// Solidity: event Initialized(uint8 version) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseInitialized(log types.Log) (*ContractDelegationManagerInitialized, error) { - event := new(ContractDelegationManagerInitialized) - if err := _ContractDelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil { +// 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 { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator is returned from FilterMinWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for MinWithdrawalDelayBlocksSet events raised by the ContractDelegationManager contract. -type ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator struct { - Event *ContractDelegationManagerMinWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log +// ContractDelegationManagerDepositScalingFactorUpdatedIterator is returned from FilterDepositScalingFactorUpdated and is used to iterate over the raw logs and unpacked data for DepositScalingFactorUpdated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerDepositScalingFactorUpdatedIterator struct { + Event *ContractDelegationManagerDepositScalingFactorUpdated // 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 @@ -2062,7 +2096,7 @@ type ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator 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 *ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool { +func (it *ContractDelegationManagerDepositScalingFactorUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2071,7 +2105,7 @@ func (it *ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() b if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerMinWithdrawalDelayBlocksSet) + it.Event = new(ContractDelegationManagerDepositScalingFactorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2086,7 +2120,7 @@ func (it *ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() b // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerMinWithdrawalDelayBlocksSet) + it.Event = new(ContractDelegationManagerDepositScalingFactorUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2102,42 +2136,43 @@ func (it *ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() b } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator) Error() error { +func (it *ContractDelegationManagerDepositScalingFactorUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator) Close() error { +func (it *ContractDelegationManagerDepositScalingFactorUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerMinWithdrawalDelayBlocksSet represents a MinWithdrawalDelayBlocksSet event raised by the ContractDelegationManager contract. -type ContractDelegationManagerMinWithdrawalDelayBlocksSet struct { - PreviousValue *big.Int - NewValue *big.Int - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerDepositScalingFactorUpdated represents a DepositScalingFactorUpdated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerDepositScalingFactorUpdated struct { + Staker common.Address + Strategy common.Address + NewDepositScalingFactor *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterMinWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// FilterDepositScalingFactorUpdated is a free log retrieval operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f. // -// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator, error) { +// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterDepositScalingFactorUpdated(opts *bind.FilterOpts) (*ContractDelegationManagerDepositScalingFactorUpdatedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet") + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "DepositScalingFactorUpdated") if err != nil { return nil, err } - return &ContractDelegationManagerMinWithdrawalDelayBlocksSetIterator{contract: _ContractDelegationManager.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil + return &ContractDelegationManagerDepositScalingFactorUpdatedIterator{contract: _ContractDelegationManager.contract, event: "DepositScalingFactorUpdated", logs: logs, sub: sub}, nil } -// WatchMinWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// WatchDepositScalingFactorUpdated is a free log subscription operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f. // -// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerMinWithdrawalDelayBlocksSet) (event.Subscription, error) { +// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchDepositScalingFactorUpdated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerDepositScalingFactorUpdated) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet") + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "DepositScalingFactorUpdated") if err != nil { return nil, err } @@ -2147,8 +2182,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchMinWit select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerMinWithdrawalDelayBlocksSet) - if err := _ContractDelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil { + event := new(ContractDelegationManagerDepositScalingFactorUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil { return err } event.Raw = log @@ -2169,21 +2204,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchMinWit }), nil } -// ParseMinWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// ParseDepositScalingFactorUpdated is a log parse operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f. // -// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseMinWithdrawalDelayBlocksSet(log types.Log) (*ContractDelegationManagerMinWithdrawalDelayBlocksSet, error) { - event := new(ContractDelegationManagerMinWithdrawalDelayBlocksSet) - if err := _ContractDelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil { +// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseDepositScalingFactorUpdated(log types.Log) (*ContractDelegationManagerDepositScalingFactorUpdated, error) { + event := new(ContractDelegationManagerDepositScalingFactorUpdated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerOperatorDetailsModifiedIterator is returned from FilterOperatorDetailsModified and is used to iterate over the raw logs and unpacked data for OperatorDetailsModified events raised by the ContractDelegationManager contract. -type ContractDelegationManagerOperatorDetailsModifiedIterator struct { - Event *ContractDelegationManagerOperatorDetailsModified // Event containing the contract specifics and raw log +// ContractDelegationManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractDelegationManager contract. +type ContractDelegationManagerInitializedIterator struct { + Event *ContractDelegationManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2197,7 +2232,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 *ContractDelegationManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2206,7 +2241,7 @@ func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerOperatorDetailsModified) + it.Event = new(ContractDelegationManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2221,7 +2256,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(ContractDelegationManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2237,52 +2272,41 @@ func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Error() error { +func (it *ContractDelegationManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Close() error { +func (it *ContractDelegationManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerOperatorDetailsModified represents a OperatorDetailsModified event raised by the ContractDelegationManager contract. -type ContractDelegationManagerOperatorDetailsModified struct { - Operator common.Address - NewOperatorDetails IDelegationManagerOperatorDetails - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerInitialized represents a Initialized event raised by the ContractDelegationManager contract. +type ContractDelegationManagerInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorDetailsModifiedIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event Initialized(uint8 version) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContractDelegationManagerInitializedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ContractDelegationManagerOperatorDetailsModifiedIterator{contract: _ContractDelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil + return &ContractDelegationManagerInitializedIterator{contract: _ContractDelegationManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorDetailsModified, operator []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event Initialized(uint8 version) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerInitialized) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -2292,8 +2316,153 @@ 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(ContractDelegationManagerInitialized) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseInitialized(log types.Log) (*ContractDelegationManagerInitialized, error) { + event := new(ContractDelegationManagerInitialized) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractDelegationManagerOperatorDetailsModifiedIterator is returned from FilterOperatorDetailsModified and is used to iterate over the raw logs and unpacked data for OperatorDetailsModified events raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorDetailsModifiedIterator struct { + Event *ContractDelegationManagerOperatorDetailsModified // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractDelegationManagerOperatorDetailsModified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractDelegationManagerOperatorDetailsModified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractDelegationManagerOperatorDetailsModifiedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractDelegationManagerOperatorDetailsModified represents a OperatorDetailsModified event raised by the ContractDelegationManager contract. +type ContractDelegationManagerOperatorDetailsModified struct { + Operator common.Address + NewOperatorDetails IDelegationManagerTypesOperatorDetails + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*ContractDelegationManagerOperatorDetailsModifiedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return &ContractDelegationManagerOperatorDetailsModifiedIterator{contract: _ContractDelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil +} + +// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerOperatorDetailsModified, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractDelegationManagerOperatorDetailsModified) + if err := _ContractDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { return err } event.Raw = log @@ -2541,7 +2710,7 @@ func (it *ContractDelegationManagerOperatorRegisteredIterator) Close() error { // ContractDelegationManagerOperatorRegistered represents a OperatorRegistered event raised by the ContractDelegationManager contract. type ContractDelegationManagerOperatorRegistered struct { Operator common.Address - OperatorDetails IDelegationManagerOperatorDetails + OperatorDetails IDelegationManagerTypesOperatorDetails Raw types.Log // Blockchain specific contextual infos } @@ -3343,9 +3512,9 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParsePauser return event, nil } -// ContractDelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the ContractDelegationManager contract. -type ContractDelegationManagerStakerDelegatedIterator struct { - Event *ContractDelegationManagerStakerDelegated // Event containing the contract specifics and raw log +// ContractDelegationManagerSlashingWithdrawalCompletedIterator is returned from FilterSlashingWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalCompleted events raised by the ContractDelegationManager contract. +type ContractDelegationManagerSlashingWithdrawalCompletedIterator struct { + Event *ContractDelegationManagerSlashingWithdrawalCompleted // 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 @@ -3359,7 +3528,7 @@ type ContractDelegationManagerStakerDelegatedIterator 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 *ContractDelegationManagerStakerDelegatedIterator) Next() bool { +func (it *ContractDelegationManagerSlashingWithdrawalCompletedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3368,7 +3537,7 @@ func (it *ContractDelegationManagerStakerDelegatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStakerDelegated) + it.Event = new(ContractDelegationManagerSlashingWithdrawalCompleted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3383,7 +3552,7 @@ func (it *ContractDelegationManagerStakerDelegatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStakerDelegated) + it.Event = new(ContractDelegationManagerSlashingWithdrawalCompleted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3399,60 +3568,41 @@ func (it *ContractDelegationManagerStakerDelegatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerStakerDelegatedIterator) Error() error { +func (it *ContractDelegationManagerSlashingWithdrawalCompletedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerStakerDelegatedIterator) Close() error { +func (it *ContractDelegationManagerSlashingWithdrawalCompletedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerStakerDelegated represents a StakerDelegated event raised by the ContractDelegationManager contract. -type ContractDelegationManagerStakerDelegated struct { - Staker common.Address - Operator common.Address - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerSlashingWithdrawalCompleted represents a SlashingWithdrawalCompleted event raised by the ContractDelegationManager contract. +type ContractDelegationManagerSlashingWithdrawalCompleted struct { + WithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// FilterSlashingWithdrawalCompleted is a free log retrieval operation binding the contract event 0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00. // -// Solidity: event StakerDelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerDelegatedIterator, error) { - - var stakerRule []interface{} - for _, stakerItem := range staker { - stakerRule = append(stakerRule, stakerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterSlashingWithdrawalCompleted(opts *bind.FilterOpts) (*ContractDelegationManagerSlashingWithdrawalCompletedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "SlashingWithdrawalCompleted") if err != nil { return nil, err } - return &ContractDelegationManagerStakerDelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil + return &ContractDelegationManagerSlashingWithdrawalCompletedIterator{contract: _ContractDelegationManager.contract, event: "SlashingWithdrawalCompleted", logs: logs, sub: sub}, nil } -// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// WatchSlashingWithdrawalCompleted is a free log subscription operation binding the contract event 0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00. // -// Solidity: event StakerDelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { +// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchSlashingWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerSlashingWithdrawalCompleted) (event.Subscription, error) { - var stakerRule []interface{} - for _, stakerItem := range staker { - stakerRule = append(stakerRule, stakerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "SlashingWithdrawalCompleted") if err != nil { return nil, err } @@ -3462,8 +3612,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerStakerDelegated) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { + event := new(ContractDelegationManagerSlashingWithdrawalCompleted) + if err := _ContractDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil { return err } event.Raw = log @@ -3484,21 +3634,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker }), nil } -// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// ParseSlashingWithdrawalCompleted is a log parse operation binding the contract event 0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00. // -// Solidity: event StakerDelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*ContractDelegationManagerStakerDelegated, error) { - event := new(ContractDelegationManagerStakerDelegated) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { +// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseSlashingWithdrawalCompleted(log types.Log) (*ContractDelegationManagerSlashingWithdrawalCompleted, error) { + event := new(ContractDelegationManagerSlashingWithdrawalCompleted) + if err := _ContractDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the ContractDelegationManager contract. -type ContractDelegationManagerStakerForceUndelegatedIterator struct { - Event *ContractDelegationManagerStakerForceUndelegated // Event containing the contract specifics and raw log +// ContractDelegationManagerSlashingWithdrawalQueuedIterator is returned from FilterSlashingWithdrawalQueued and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalQueued events raised by the ContractDelegationManager contract. +type ContractDelegationManagerSlashingWithdrawalQueuedIterator struct { + Event *ContractDelegationManagerSlashingWithdrawalQueued // 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 @@ -3512,7 +3662,7 @@ type ContractDelegationManagerStakerForceUndelegatedIterator 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 *ContractDelegationManagerStakerForceUndelegatedIterator) Next() bool { +func (it *ContractDelegationManagerSlashingWithdrawalQueuedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3521,7 +3671,7 @@ func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStakerForceUndelegated) + it.Event = new(ContractDelegationManagerSlashingWithdrawalQueued) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3536,7 +3686,7 @@ func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStakerForceUndelegated) + it.Event = new(ContractDelegationManagerSlashingWithdrawalQueued) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3552,60 +3702,42 @@ func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Error() error { +func (it *ContractDelegationManagerSlashingWithdrawalQueuedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Close() error { +func (it *ContractDelegationManagerSlashingWithdrawalQueuedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the ContractDelegationManager contract. -type ContractDelegationManagerStakerForceUndelegated struct { - Staker common.Address - Operator common.Address - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerSlashingWithdrawalQueued represents a SlashingWithdrawalQueued event raised by the ContractDelegationManager contract. +type ContractDelegationManagerSlashingWithdrawalQueued struct { + WithdrawalRoot [32]byte + Withdrawal IDelegationManagerTypesWithdrawal + Raw types.Log // Blockchain specific contextual infos } -// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// FilterSlashingWithdrawalQueued is a free log retrieval operation binding the contract event 0x58883f0678ff43a2c049e6a3a7a8b9b0e9062959f3a99192505888193a0c5fed. // -// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerForceUndelegatedIterator, error) { - - var stakerRule []interface{} - for _, stakerItem := range staker { - stakerRule = append(stakerRule, stakerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterSlashingWithdrawalQueued(opts *bind.FilterOpts) (*ContractDelegationManagerSlashingWithdrawalQueuedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "SlashingWithdrawalQueued") if err != nil { return nil, err } - return &ContractDelegationManagerStakerForceUndelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil + return &ContractDelegationManagerSlashingWithdrawalQueuedIterator{contract: _ContractDelegationManager.contract, event: "SlashingWithdrawalQueued", logs: logs, sub: sub}, nil } -// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// WatchSlashingWithdrawalQueued is a free log subscription operation binding the contract event 0x58883f0678ff43a2c049e6a3a7a8b9b0e9062959f3a99192505888193a0c5fed. // -// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { - - var stakerRule []interface{} - for _, stakerItem := range staker { - stakerRule = append(stakerRule, stakerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchSlashingWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerSlashingWithdrawalQueued) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "SlashingWithdrawalQueued") if err != nil { return nil, err } @@ -3615,8 +3747,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerStakerForceUndelegated) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { + event := new(ContractDelegationManagerSlashingWithdrawalQueued) + if err := _ContractDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil { return err } event.Raw = log @@ -3637,21 +3769,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker }), nil } -// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// ParseSlashingWithdrawalQueued is a log parse operation binding the contract event 0x58883f0678ff43a2c049e6a3a7a8b9b0e9062959f3a99192505888193a0c5fed. // -// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*ContractDelegationManagerStakerForceUndelegated, error) { - event := new(ContractDelegationManagerStakerForceUndelegated) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { +// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseSlashingWithdrawalQueued(log types.Log) (*ContractDelegationManagerSlashingWithdrawalQueued, error) { + event := new(ContractDelegationManagerSlashingWithdrawalQueued) + if err := _ContractDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the ContractDelegationManager contract. -type ContractDelegationManagerStakerUndelegatedIterator struct { - Event *ContractDelegationManagerStakerUndelegated // Event containing the contract specifics and raw log +// ContractDelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerDelegatedIterator struct { + Event *ContractDelegationManagerStakerDelegated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3665,7 +3797,7 @@ type ContractDelegationManagerStakerUndelegatedIterator 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 *ContractDelegationManagerStakerUndelegatedIterator) Next() bool { +func (it *ContractDelegationManagerStakerDelegatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3674,7 +3806,7 @@ func (it *ContractDelegationManagerStakerUndelegatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStakerUndelegated) + it.Event = new(ContractDelegationManagerStakerDelegated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3689,7 +3821,7 @@ func (it *ContractDelegationManagerStakerUndelegatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStakerUndelegated) + it.Event = new(ContractDelegationManagerStakerDelegated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3705,28 +3837,28 @@ func (it *ContractDelegationManagerStakerUndelegatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerStakerUndelegatedIterator) Error() error { +func (it *ContractDelegationManagerStakerDelegatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerStakerUndelegatedIterator) Close() error { +func (it *ContractDelegationManagerStakerDelegatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the ContractDelegationManager contract. -type ContractDelegationManagerStakerUndelegated struct { +// ContractDelegationManagerStakerDelegated represents a StakerDelegated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerDelegated struct { Staker common.Address Operator common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. // -// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerUndelegatedIterator, error) { +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerDelegatedIterator, error) { var stakerRule []interface{} for _, stakerItem := range staker { @@ -3737,17 +3869,17 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStake operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerStakerUndelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil + return &ContractDelegationManagerStakerDelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil } -// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. // -// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { var stakerRule []interface{} for _, stakerItem := range staker { @@ -3758,7 +3890,7 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule) if err != nil { return nil, err } @@ -3768,8 +3900,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerStakerUndelegated) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { + event := new(ContractDelegationManagerStakerDelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { return err } event.Raw = log @@ -3790,21 +3922,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStaker }), nil } -// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. // -// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*ContractDelegationManagerStakerUndelegated, error) { - event := new(ContractDelegationManagerStakerUndelegated) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*ContractDelegationManagerStakerDelegated, error) { + event := new(ContractDelegationManagerStakerDelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator is returned from FilterStrategyWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for StrategyWithdrawalDelayBlocksSet events raised by the ContractDelegationManager contract. -type ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator struct { - Event *ContractDelegationManagerStrategyWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log +// ContractDelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerForceUndelegatedIterator struct { + Event *ContractDelegationManagerStakerForceUndelegated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3818,7 +3950,7 @@ type ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator 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 *ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() bool { +func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3827,7 +3959,7 @@ func (it *ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Nex if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStrategyWithdrawalDelayBlocksSet) + it.Event = new(ContractDelegationManagerStakerForceUndelegated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3842,7 +3974,7 @@ func (it *ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Nex // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerStrategyWithdrawalDelayBlocksSet) + it.Event = new(ContractDelegationManagerStakerForceUndelegated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3858,43 +3990,60 @@ func (it *ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Nex } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Error() error { +func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Close() error { +func (it *ContractDelegationManagerStakerForceUndelegatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerStrategyWithdrawalDelayBlocksSet represents a StrategyWithdrawalDelayBlocksSet event raised by the ContractDelegationManager contract. -type ContractDelegationManagerStrategyWithdrawalDelayBlocksSet struct { - Strategy common.Address - PreviousValue *big.Int - NewValue *big.Int - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerForceUndelegated struct { + Staker common.Address + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterStrategyWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. // -// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator, error) { +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerForceUndelegatedIterator, error) { + + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet") + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerStrategyWithdrawalDelayBlocksSetIterator{contract: _ContractDelegationManager.contract, event: "StrategyWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil + return &ContractDelegationManagerStakerForceUndelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil } -// WatchStrategyWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. // -// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStrategyWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStrategyWithdrawalDelayBlocksSet) (event.Subscription, error) { +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StrategyWithdrawalDelayBlocksSet") + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) if err != nil { return nil, err } @@ -3904,8 +4053,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStrate select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerStrategyWithdrawalDelayBlocksSet) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", log); err != nil { + event := new(ContractDelegationManagerStakerForceUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { return err } event.Raw = log @@ -3926,21 +4075,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStrate }), nil } -// ParseStrategyWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. // -// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStrategyWithdrawalDelayBlocksSet(log types.Log) (*ContractDelegationManagerStrategyWithdrawalDelayBlocksSet, error) { - event := new(ContractDelegationManagerStrategyWithdrawalDelayBlocksSet) - if err := _ContractDelegationManager.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", log); err != nil { +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*ContractDelegationManagerStakerForceUndelegated, error) { + event := new(ContractDelegationManagerStakerForceUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ContractDelegationManager contract. -type ContractDelegationManagerUnpausedIterator struct { - Event *ContractDelegationManagerUnpaused // Event containing the contract specifics and raw log +// ContractDelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerUndelegatedIterator struct { + Event *ContractDelegationManagerStakerUndelegated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3954,7 +4103,7 @@ type ContractDelegationManagerUnpausedIterator 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 *ContractDelegationManagerUnpausedIterator) Next() bool { +func (it *ContractDelegationManagerStakerUndelegatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3963,7 +4112,7 @@ func (it *ContractDelegationManagerUnpausedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerUnpaused) + it.Event = new(ContractDelegationManagerStakerUndelegated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3978,7 +4127,7 @@ func (it *ContractDelegationManagerUnpausedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerUnpaused) + it.Event = new(ContractDelegationManagerStakerUndelegated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3994,52 +4143,60 @@ func (it *ContractDelegationManagerUnpausedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerUnpausedIterator) Error() error { +func (it *ContractDelegationManagerStakerUndelegatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerUnpausedIterator) Close() error { +func (it *ContractDelegationManagerStakerUndelegatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerUnpaused represents a Unpaused event raised by the ContractDelegationManager contract. -type ContractDelegationManagerUnpaused struct { - Account common.Address - NewPausedStatus *big.Int - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the ContractDelegationManager contract. +type ContractDelegationManagerStakerUndelegated struct { + Staker common.Address + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterUnpaused is a free log retrieval operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. // -// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*ContractDelegationManagerUnpausedIterator, error) { +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*ContractDelegationManagerStakerUndelegatedIterator, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Unpaused", accountRule) + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule) if err != nil { return nil, err } - return &ContractDelegationManagerUnpausedIterator{contract: _ContractDelegationManager.contract, event: "Unpaused", logs: logs, sub: sub}, nil + return &ContractDelegationManagerStakerUndelegatedIterator{contract: _ContractDelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil } -// WatchUnpaused is a free log subscription operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. // -// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerUnpaused, account []common.Address) (event.Subscription, error) { +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) + var stakerRule []interface{} + for _, stakerItem := range staker { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Unpaused", accountRule) + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule) if err != nil { return nil, err } @@ -4049,8 +4206,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchUnpaus select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerUnpaused) - if err := _ContractDelegationManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + event := new(ContractDelegationManagerStakerUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { return err } event.Raw = log @@ -4071,21 +4228,21 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchUnpaus }), nil } -// ParseUnpaused is a log parse operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. // -// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseUnpaused(log types.Log) (*ContractDelegationManagerUnpaused, error) { - event := new(ContractDelegationManagerUnpaused) - if err := _ContractDelegationManager.contract.UnpackLog(event, "Unpaused", log); err != nil { +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*ContractDelegationManagerStakerUndelegated, error) { + event := new(ContractDelegationManagerStakerUndelegated) + if err := _ContractDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractDelegationManagerWithdrawalCompletedIterator is returned from FilterWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for WithdrawalCompleted events raised by the ContractDelegationManager contract. -type ContractDelegationManagerWithdrawalCompletedIterator struct { - Event *ContractDelegationManagerWithdrawalCompleted // Event containing the contract specifics and raw log +// ContractDelegationManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ContractDelegationManager contract. +type ContractDelegationManagerUnpausedIterator struct { + Event *ContractDelegationManagerUnpaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -4099,7 +4256,7 @@ type ContractDelegationManagerWithdrawalCompletedIterator 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 *ContractDelegationManagerWithdrawalCompletedIterator) Next() bool { +func (it *ContractDelegationManagerUnpausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4108,7 +4265,7 @@ func (it *ContractDelegationManagerWithdrawalCompletedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerWithdrawalCompleted) + it.Event = new(ContractDelegationManagerUnpaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4123,7 +4280,7 @@ func (it *ContractDelegationManagerWithdrawalCompletedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractDelegationManagerWithdrawalCompleted) + it.Event = new(ContractDelegationManagerUnpaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4139,176 +4296,52 @@ func (it *ContractDelegationManagerWithdrawalCompletedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerWithdrawalCompletedIterator) Error() error { +func (it *ContractDelegationManagerUnpausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractDelegationManagerWithdrawalCompletedIterator) Close() error { +func (it *ContractDelegationManagerUnpausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractDelegationManagerWithdrawalCompleted represents a WithdrawalCompleted event raised by the ContractDelegationManager contract. -type ContractDelegationManagerWithdrawalCompleted struct { - WithdrawalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// ContractDelegationManagerUnpaused represents a Unpaused event raised by the ContractDelegationManager contract. +type ContractDelegationManagerUnpaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterWithdrawalCompleted is a free log retrieval operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d. +// FilterUnpaused is a free log retrieval operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. // -// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterWithdrawalCompleted(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalCompletedIterator, error) { +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*ContractDelegationManagerUnpausedIterator, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "WithdrawalCompleted") - if err != nil { - return nil, err + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) } - return &ContractDelegationManagerWithdrawalCompletedIterator{contract: _ContractDelegationManager.contract, event: "WithdrawalCompleted", logs: logs, sub: sub}, nil -} - -// WatchWithdrawalCompleted is a free log subscription operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d. -// -// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalCompleted) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "WithdrawalCompleted") + logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "Unpaused", accountRule) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerWithdrawalCompleted) - if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawalCompleted is a log parse operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d. -// -// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseWithdrawalCompleted(log types.Log) (*ContractDelegationManagerWithdrawalCompleted, error) { - event := new(ContractDelegationManagerWithdrawalCompleted) - if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractDelegationManagerWithdrawalQueuedIterator is returned from FilterWithdrawalQueued and is used to iterate over the raw logs and unpacked data for WithdrawalQueued events raised by the ContractDelegationManager contract. -type ContractDelegationManagerWithdrawalQueuedIterator struct { - Event *ContractDelegationManagerWithdrawalQueued // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ContractDelegationManagerWithdrawalQueuedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ContractDelegationManagerWithdrawalQueued) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ContractDelegationManagerWithdrawalQueued) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractDelegationManagerWithdrawalQueuedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractDelegationManagerWithdrawalQueuedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractDelegationManagerWithdrawalQueued represents a WithdrawalQueued event raised by the ContractDelegationManager contract. -type ContractDelegationManagerWithdrawalQueued struct { - WithdrawalRoot [32]byte - Withdrawal IDelegationManagerWithdrawal - Raw types.Log // Blockchain specific contextual infos + return &ContractDelegationManagerUnpausedIterator{contract: _ContractDelegationManager.contract, event: "Unpaused", logs: logs, sub: sub}, nil } -// FilterWithdrawalQueued is a free log retrieval operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9. +// WatchUnpaused is a free log subscription operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. // -// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*ContractDelegationManagerWithdrawalQueuedIterator, error) { +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerUnpaused, account []common.Address) (event.Subscription, error) { - logs, sub, err := _ContractDelegationManager.contract.FilterLogs(opts, "WithdrawalQueued") - if err != nil { - return nil, err + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) } - return &ContractDelegationManagerWithdrawalQueuedIterator{contract: _ContractDelegationManager.contract, event: "WithdrawalQueued", logs: logs, sub: sub}, nil -} -// WatchWithdrawalQueued is a free log subscription operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9. -// -// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *ContractDelegationManagerWithdrawalQueued) (event.Subscription, error) { - - logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "WithdrawalQueued") + logs, sub, err := _ContractDelegationManager.contract.WatchLogs(opts, "Unpaused", accountRule) if err != nil { return nil, err } @@ -4318,8 +4351,8 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractDelegationManagerWithdrawalQueued) - if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil { + event := new(ContractDelegationManagerUnpaused) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Unpaused", log); err != nil { return err } event.Raw = log @@ -4340,12 +4373,12 @@ func (_ContractDelegationManager *ContractDelegationManagerFilterer) WatchWithdr }), nil } -// ParseWithdrawalQueued is a log parse operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9. +// ParseUnpaused is a log parse operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. // -// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal) -func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseWithdrawalQueued(log types.Log) (*ContractDelegationManagerWithdrawalQueued, error) { - event := new(ContractDelegationManagerWithdrawalQueued) - if err := _ContractDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil { +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_ContractDelegationManager *ContractDelegationManagerFilterer) ParseUnpaused(log types.Log) (*ContractDelegationManagerUnpaused, error) { + event := new(ContractDelegationManagerUnpaused) + if err := _ContractDelegationManager.contract.UnpackLog(event, "Unpaused", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/bindings/EigenPod/binding.go b/contracts/bindings/EigenPod/binding.go index 721c6241..3cd23c78 100644 --- a/contracts/bindings/EigenPod/binding.go +++ b/contracts/bindings/EigenPod/binding.go @@ -54,16 +54,17 @@ type BeaconChainProofsValidatorProof struct { Proof []byte } -// IEigenPodCheckpoint is an auto generated low-level Go binding around an user-defined struct. -type IEigenPodCheckpoint struct { - BeaconBlockRoot [32]byte - ProofsRemaining *big.Int - PodBalanceGwei uint64 - BalanceDeltasGwei *big.Int +// 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 } -// IEigenPodValidatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IEigenPodValidatorInfo struct { +// IEigenPodTypesValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IEigenPodTypesValidatorInfo struct { ValidatorIndex uint64 RestakedBalanceGwei uint64 LastCheckpointedAt uint64 @@ -72,8 +73,8 @@ type IEigenPodValidatorInfo 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\":\"structIEigenPod.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int128\",\"internalType\":\"int128\"}]}],\"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\":\"structIEigenPod.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\":\"enumIEigenPod.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPod.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\":\"enumIEigenPod.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPod.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPod.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}]", - Bin: "0x60e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220721ae261e7ea8172633ca39b5c47509345abd9d23c9a1d07374863ca537d102264736f6c634300080c0033", + 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\":\"WithdrawCredentialsNotForEigenPod\",\"inputs\":[]}]", + Bin: "0x60e060405234801561001057600080fd5b50604051613eb8380380613eb883398101604081905261002f91610136565b6001600160a01b03808416608052821660a0526001600160401b03811660c05261005761005f565b50505061018f565b600054610100900460ff16156100cb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461011c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013357600080fd5b50565b60008060006060848603121561014b57600080fd5b83516101568161011e565b60208501519093506101678161011e565b60408501519092506001600160401b038116811461018457600080fd5b809150509250925092565b60805160a05160c051613cad61020b600039600061062d0152600081816102bd0152818161066801528181610712015281816109dd01528181610c1801528181610f0101528181610faa015281816111e8015281816115510152818161168801526128010152600081816104e601526110130152613cad6000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c146105bb578063ee94d67c146105db578063f074ba62146105fb578063f28824611461061b57600080fd5b8063c49074421461055b578063c4d66de81461057b578063d06d55871461059b57600080fd5b80636fcd0e53146104705780637439841f1461049d57806374cdd798146104d457806388676cad146105085780639b4e463414610528578063b522538a1461053b57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a59146103cd578063587533571461040357806358eaee79146104235780636c0d2d5a1461045057600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613149565b61064f565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f36600461320b565b610984565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b506103716040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101ff9190600060a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103d957600080fd5b5061024c6103e83660046132e9565b603b602052600090815260409020546001600160401b031681565b34801561040f57600080fd5b50603e546101eb906001600160a01b031681565b34801561042f57600080fd5b5061044361043e366004613345565b610c82565b6040516101ff91906133be565b34801561045c57600080fd5b5061021e61046b3660046132e9565b610ce7565b34801561047c57600080fd5b5061049061048b3660046133cc565b610dfb565b6040516101ff91906133e5565b3480156104a957600080fd5b506104436104b83660046133cc565b600090815260366020526040902054600160c01b900460ff1690565b3480156104e057600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051457600080fd5b506101c9610523366004613447565b610ea8565b6101c9610536366004613464565b610f9f565b34801561054757600080fd5b50610490610556366004613345565b6110ea565b34801561056757600080fd5b506101c96105763660046134fb565b6111dd565b34801561058757600080fd5b506101c9610596366004613527565b611329565b3480156105a757600080fd5b506101c96105b6366004613527565b611479565b3480156105c757600080fd5b506101c96105d636600461361a565b61150d565b3480156105e757600080fd5b50603a5461024c906001600160401b031681565b34801561060757600080fd5b506101c96106163660046136f3565b61166f565b34801561062757600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db919061375f565b156106f95760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610785919061375f565b156107a35760405163840a48d560e01b815260040160405180910390fd5b60006107e96107b2858061377c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a7592505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561085857610858613386565b600281111561086957610869613386565b81525050905080604001516001600160401b0316876001600160401b0316116108a5576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108bd576108bd613386565b146108db5760405163d49e19a760e01b815260040160405180910390fd5b61091f6108e8868061377c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a9992505050565b61093c5760405163161ce5ed60e31b815260040160405180910390fd5b61094e61094888610ce7565b87611ac3565b610971863561095d878061377c565b61096a60208a018a6137c5565b8651611b69565b61097b6000611c94565b50505050505050565b6033546001600160a01b03163314806109a75750603e546001600160a01b031633145b6109c45760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a50919061375f565b15610a6e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a7c57508382145b610a99576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610acf576040516337e07ffd60e01b815260040160405180910390fd5b610ae1610adb8a610ce7565b89611ac3565b6000805b87811015610b7a57610b668a358a8a84818110610b0457610b0461380b565b9050602002016020810190610b199190613821565b898985818110610b2b57610b2b61380b565b9050602002810190610b3d91906137c5565b898987818110610b4f57610b4f61380b565b9050602002810190610b61919061377c565b611e17565b610b70908361385e565b9150600101610ae5565b50603a54600160401b90046001600160401b031615610be857610ba1633b9aca0082613887565b603d8054601390610bc3908490600160981b90046001600160401b031661389b565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b603354604051630257884360e21b81526001600160a01b03918216600482015260248101839052600060448201527f00000000000000000000000000000000000000000000000000000000000000009091169063095e210c90606401600060405180830381600087803b158015610c5e57600080fd5b505af1158015610c72573d6000803e3d6000fd5b5050505050505050505050505050565b600080610cc484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061227492505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610cf6611fff600c6138ba565b610d096001600160401b038416426138d1565b10610d2757604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d6f91613908565b600060405180830381855afa9150503d8060008114610daa576040519150601f19603f3d011682016040523d82523d6000602084013e610daf565b606091505b5091509150818015610dc2575060008151115b610ddf5760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610df39190613924565b949350505050565b610e236040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e8e57610e8e613386565b6002811115610e9f57610e9f613386565b90525092915050565b6033546001600160a01b0316331480610ecb5750603e546001600160a01b031633145b610ee85760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f74919061375f565b15610f925760405163840a48d560e01b815260040160405180910390fd5b610f9b82611c94565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fe857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec800000146110115760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611054612309565b8888886040518863ffffffff1660e01b815260040161107896959493929190613992565b6000604051808303818588803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e2385856040516110db9291906139e1565b60405180910390a15050505050565b6111126040805160808101825260008082526020820181905291810182905290606082015290565b6036600061115585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061227492505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111c2576111c2613386565b60028111156111d3576111d3613386565b9052509392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461122657604051633213a66160e21b815260040160405180910390fd5b611234633b9aca00826139f5565b15611252576040516321ddeb1760e21b815260040160405180910390fd5b6000611262633b9aca0083613887565b6034549091506001600160401b039081169082161115611295576040516302c6f54760e21b815260040160405180910390fd5b603480548291906000906112b39084906001600160401b0316613a09565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161131291815260200190565b60405180910390a2611324838361234e565b505050565b600054610100900460ff16158080156113495750600054600160ff909116105b806113635750303b158015611363575060005460ff166001145b6113cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156113ee576000805461ff0019166101001790555b6001600160a01b038216611415576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f9b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114a45760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146115385760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156115a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c4919061375f565b156115e25760405163840a48d560e01b815260040160405180910390fd5b8251845114611604576040516343714afd60e01b815260040160405180910390fd5b60005b845181101561166857611660838583815181106116265761162661380b565b60200260200101518784815181106116405761164061380b565b60200260200101516001600160a01b03166124679092919063ffffffff16565b600101611607565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156116d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fb919061375f565b156117195760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b0316600081900361174e57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b90049092166080820152906117ad90876124b9565b6000805b85811015611a1b57368787838181106117cc576117cc61380b565b90506020028101906117de9190613a28565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561184f5761184f613386565b600281111561186057611860613386565b905250905060018160600151600281111561187d5761187d613386565b14611889575050611a13565b856001600160401b031681604001516001600160401b0316106118ad575050611a13565b600080806118be848a8f358861256b565b60208b01805193965091945092506118d582613a3e565b62ffffff169052506080880180518491906118f190839061389b565b6001600160401b0316905250606088018051839190611911908390613a5d565b60070b905250611921818861389b565b85356000908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156119c6576119c6613386565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a350505050505b6001016117b1565b506001600160401b038084166000908152603b6020526040812080548493919291611a489185911661389b565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061097b82612691565b600081600081518110611a8a57611a8a61380b565b60200260200101519050919050565b600081600381518110611aae57611aae61380b565b60200260200101516000801b14159050919050565b611acf600360206138ba565b611adc60208301836137c5565b905014611afc576040516313717da960e21b815260040160405180910390fd5b611b4c611b0c60208301836137c5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003612938565b610f9b576040516309bde33960e01b815260040160405180910390fd5b60088414611b8a5760405163200591bd60e01b815260040160405180910390fd5b6005611b986028600161385e565b611ba2919061385e565b611bad9060206138ba565b8214611bcc576040516313717da960e21b815260040160405180910390fd5b6000611c0a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061295092505050565b9050600064ffffffffff8316611c226028600161385e565b600b901b179050611c6d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050612938565b611c8a576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611cc45760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611cf2576040516367db5b8b60e01b815260040160405180910390fd5b6034546000906001600160401b0316611d0f633b9aca0047613887565b611d199190613a09565b9050818015611d2f57506001600160401b038116155b15611d4d576040516332dea95960e21b815260040160405180910390fd5b60006040518060a00160405280611d6342610ce7565b815260395462ffffff1660208201526001600160401b038085166040830152600060608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611dc881612691565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080611e56848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a7592505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611ec557611ec5613386565b6002811115611ed657611ed6613386565b9052509050600081606001516002811115611ef357611ef3613386565b14611f11576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611f57868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612be992505050565b6001600160401b031603611f7e57604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611fc4868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c0e92505050565b6001600160401b031614611feb57604051632eade63760e01b815260040160405180910390fd5b611ff3612309565b611ffc90613a8c565b612038868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c2692505050565b1461205657604051632230566760e11b815260040160405180910390fd5b6000612094868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c3b92505050565b90506120a48a87878b8b8e611b69565b603980549060006120b483613ab0565b9091555050603a546001600160401b0380821691600160401b900416156120ea5750603a54600160401b90046001600160401b03165b6040805160808101825264ffffffffff8c1681526001600160401b03848116602083015283169181019190915260608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156121bd576121bd613386565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612265633b9aca006001600160401b0384166138ba565b9b9a5050505050505050505050565b6000815160301461229857604051634f88323960e11b815260040160405180910390fd5b6040516002906122af908490600090602001613ac9565b60408051601f19818403018152908290526122c991613908565b602060405180830381855afa1580156122e6573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610ce19190613924565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b8047101561239e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016113c2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123eb576040519150601f19603f3d011682016040523d82523d6000602084013e6123f0565b606091505b50509050806113245760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016113c2565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611324908490612c53565b6124c56005600361385e565b6124d09060206138ba565b6124dd60208301836137c5565b9050146124fd576040516313717da960e21b815260040160405180910390fd5b606c61254e61250f60208401846137c5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084612938565b611324576040516309bde33960e01b815260040160405180910390fd5b8351602085015190600090819081612584878388612d28565b9050846001600160401b0316816001600160401b0316146125fe576125a98186612e09565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b0152600003612685576039805490600061262f83613af8565b9091555050600260608a015261264484613b0f565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b806020015162ffffff166000036128a6576000633b9aca00826060015160070b83604001516001600160401b03166126c99190613b36565b600f0b6126d69190613b75565b60408301516034805492935090916000906126fb9084906001600160401b031661389b565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c819055603d80546001600160d81b0319169055808212156127c9576080830151603454600091633b9aca009161277f91906001600160401b031661389b565b6001600160401b031661279291906138ba565b905080670de0b6b3a76400006127a785613ba5565b6127b1908461385e565b6127bb91906138ba565b6127c59190613887565b9150505b603354604051630257884360e21b81526001600160a01b039182166004820152602481018490526001600160401b03831660448201527f00000000000000000000000000000000000000000000000000000000000000009091169063095e210c90606401600060405180830381600087803b15801561284757600080fd5b505af115801561285b573d6000803e3d6000fd5b5050603a546040518581526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a2505050565b8051603c556020810151603d805460408401516060850151608086015162ffffff9095166affffffffffffffffffffff199093169290921763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9282169290920267ffffffffffffffff60981b191691909117600160981b91909316029190911790555b50565b600083612946868585612e1c565b1495945050505050565b600080600283516129619190613887565b90506000816001600160401b0381111561297d5761297d613544565b6040519080825280602002602001820160405280156129a6578160200160208202803683370190505b50905060005b82811015612aa3576002856129c183836138ba565b815181106129d1576129d161380b565b6020026020010151868360026129e791906138ba565b6129f290600161385e565b81518110612a0257612a0261380b565b6020026020010151604051602001612a24929190918252602082015260400190565b60408051601f1981840301815290829052612a3e91613908565b602060405180830381855afa158015612a5b573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612a7e9190613924565b828281518110612a9057612a9061380b565b60209081029190910101526001016129ac565b50612aaf600283613887565b91505b8115612bc55760005b82811015612bb257600282612ad083836138ba565b81518110612ae057612ae061380b565b602002602001015183836002612af691906138ba565b612b0190600161385e565b81518110612b1157612b1161380b565b6020026020010151604051602001612b33929190918252602082015260400190565b60408051601f1981840301815290829052612b4d91613908565b602060405180830381855afa158015612b6a573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b8d9190613924565b828281518110612b9f57612b9f61380b565b6020908102919091010152600101612abb565b50612bbe600283613887565b9150612ab2565b80600081518110612bd857612bd861380b565b602002602001015192505050919050565b6000610ce182600581518110612c0157612c0161380b565b6020026020010151612ef9565b6000610ce182600681518110612c0157612c0161380b565b600081600181518110611a8a57611a8a61380b565b6000610ce182600281518110612c0157612c0161380b565b6000612ca8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f609092919063ffffffff16565b9050805160001480612cc9575080806020019051810190612cc9919061375f565b6113245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016113c2565b6000612d366026600161385e565b612d419060206138ba565b612d4e60408401846137c5565b905014612d6e576040516313717da960e21b815260040160405180910390fd5b6000612d7b600485613bc1565b64ffffffffff169050612dd5612d9460408501856137c5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584612938565b612df2576040516309bde33960e01b815260040160405180910390fd5b612e00836020013585612f6f565b95945050505050565b6000612e158284613beb565b9392505050565b60008351600014158015612e3b575060208451612e3991906139f5565b155b612e58576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612eef57612e7c6002856139f5565b600003612eb2578151600052808601516020526020826040600060026107d05a03fa612ea757600080fd5b600284049350612edd565b8086015160005281516020526020826040600060026107d05a03fa612ed657600080fd5b6002840493505b612ee860208261385e565b9050612e69565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610df38484600085612f9c565b600080612f7d600484613c1a565b612f88906040613c44565b64ffffffffff169050610df384821b612ef9565b606082471015612ffd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016113c2565b600080866001600160a01b031685876040516130199190613908565b60006040518083038185875af1925050503d8060008114613056576040519150601f19603f3d011682016040523d82523d6000602084013e61305b565b606091505b509150915061306c87838387613077565b979650505050505050565b606083156130e65782516000036130df576001600160a01b0385163b6130df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016113c2565b5081610df3565b610df383838151156130fb5781518083602001fd5b8060405162461bcd60e51b81526004016113c29190613c64565b80356001600160401b038116811461312c57600080fd5b919050565b60006040828403121561314357600080fd5b50919050565b60008060006060848603121561315e57600080fd5b61316784613115565b925060208401356001600160401b0381111561318257600080fd5b61318e86828701613131565b92505060408401356001600160401b038111156131aa57600080fd5b6131b686828701613131565b9150509250925092565b60008083601f8401126131d257600080fd5b5081356001600160401b038111156131e957600080fd5b6020830191508360208260051b850101111561320457600080fd5b9250929050565b60008060008060008060008060a0898b03121561322757600080fd5b61323089613115565b975060208901356001600160401b0381111561324b57600080fd5b6132578b828c01613131565b97505060408901356001600160401b0381111561327357600080fd5b61327f8b828c016131c0565b90975095505060608901356001600160401b0381111561329e57600080fd5b6132aa8b828c016131c0565b90955093505060808901356001600160401b038111156132c957600080fd5b6132d58b828c016131c0565b999c989b5096995094979396929594505050565b6000602082840312156132fb57600080fd5b612e1582613115565b60008083601f84011261331657600080fd5b5081356001600160401b0381111561332d57600080fd5b60208301915083602082850101111561320457600080fd5b6000806020838503121561335857600080fd5b82356001600160401b0381111561336e57600080fd5b61337a85828601613304565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b600381106133ba57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610ce1828461339c565b6000602082840312156133de57600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151613432606084018261339c565b5092915050565b801515811461293557600080fd5b60006020828403121561345957600080fd5b8135612e1581613439565b60008060008060006060868803121561347c57600080fd5b85356001600160401b0381111561349257600080fd5b61349e88828901613304565b90965094505060208601356001600160401b038111156134bd57600080fd5b6134c988828901613304565b96999598509660400135949350505050565b6001600160a01b038116811461293557600080fd5b803561312c816134db565b6000806040838503121561350e57600080fd5b8235613519816134db565b946020939093013593505050565b60006020828403121561353957600080fd5b8135612e15816134db565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561358257613582613544565b604052919050565b60006001600160401b038211156135a3576135a3613544565b5060051b60200190565b600082601f8301126135be57600080fd5b81356135d16135cc8261358a565b61355a565b8082825260208201915060208360051b8601019250858311156135f357600080fd5b602085015b838110156136105780358352602092830192016135f8565b5095945050505050565b60008060006060848603121561362f57600080fd5b83356001600160401b0381111561364557600080fd5b8401601f8101861361365657600080fd5b80356136646135cc8261358a565b8082825260208201915060208360051b85010192508883111561368657600080fd5b6020840193505b828410156136b15783356136a0816134db565b82526020938401939091019061368d565b955050505060208401356001600160401b038111156136cf57600080fd5b6136db868287016135ad565b9250506136ea604085016134f0565b90509250925092565b60008060006040848603121561370857600080fd5b83356001600160401b0381111561371e57600080fd5b61372a86828701613131565b93505060208401356001600160401b0381111561374657600080fd5b613752868287016131c0565b9497909650939450505050565b60006020828403121561377157600080fd5b8151612e1581613439565b6000808335601e1984360301811261379357600080fd5b8301803591506001600160401b038211156137ad57600080fd5b6020019150600581901b360382131561320457600080fd5b6000808335601e198436030181126137dc57600080fd5b8301803591506001600160401b038211156137f657600080fd5b60200191503681900382131561320457600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561383357600080fd5b813564ffffffffff81168114612e1557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610ce157610ce1613848565b634e487b7160e01b600052601260045260246000fd5b60008261389657613896613871565b500490565b6001600160401b038181168382160190811115610ce157610ce1613848565b8082028115828204841417610ce157610ce1613848565b81810381811115610ce157610ce1613848565b60005b838110156138ff5781810151838201526020016138e7565b50506000910152565b6000825161391a8184602087016138e4565b9190910192915050565b60006020828403121561393657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261397e8160208601602086016138e4565b601f01601f19169290920160200192915050565b6080815260006139a660808301888a61393d565b82810360208401526139b88188613966565b905082810360408401526139cd81868861393d565b915050826060830152979650505050505050565b602081526000610df360208301848661393d565b600082613a0457613a04613871565b500690565b6001600160401b038281168282160390811115610ce157610ce1613848565b60008235605e1983360301811261391a57600080fd5b600062ffffff821680613a5357613a53613848565b6000190192915050565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610ce157610ce1613848565b805160208083015191908110156131435760001960209190910360031b1b16919050565b600060018201613ac257613ac2613848565b5060010190565b60008351613adb8184602088016138e4565b6001600160801b0319939093169190920190815260100192915050565b600081613b0757613b07613848565b506000190190565b60008160070b677fffffffffffffff198103613b2d57613b2d613848565b60000392915050565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610ce157610ce1613848565b80820260008212600160ff1b84141615613b9157613b91613848565b8181058314821517610ce157610ce1613848565b6000600160ff1b8201613bba57613bba613848565b5060000390565b600064ffffffffff831680613bd857613bd8613871565b8064ffffffffff84160491505092915050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610ce157610ce1613848565b600064ffffffffff831680613c3157613c31613871565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461343257613432613848565b602081526000612e15602083018461396656fea2646970667358221220e6ad6ddb2efd1ed59d760006b2d482a48fed1d390b13dae5b6c5f63c2f116d1c64736f6c634300081b0033", } // ContractEigenPodABI is the input ABI used to generate the binding from. @@ -116,7 +117,7 @@ type ContractEigenPodCalls interface { CheckpointBalanceExitedGwei(opts *bind.CallOpts, arg0 uint64) (uint64, error) - CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodCheckpoint, error) + CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodTypesCheckpoint, error) CurrentCheckpointTimestamp(opts *bind.CallOpts) (uint64, error) @@ -132,9 +133,9 @@ type ContractEigenPodCalls interface { ProofSubmitter(opts *bind.CallOpts) (common.Address, error) - ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) + ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) - ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodValidatorInfo, error) + ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) ValidatorStatus(opts *bind.CallOpts, validatorPubkey []byte) (uint8, error) @@ -460,16 +461,16 @@ func (_ContractEigenPod *ContractEigenPodCallerSession) CheckpointBalanceExitedG // CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372. // -// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128)) -func (_ContractEigenPod *ContractEigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodCheckpoint, error) { +// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64)) +func (_ContractEigenPod *ContractEigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodTypesCheckpoint, error) { var out []interface{} err := _ContractEigenPod.contract.Call(opts, &out, "currentCheckpoint") if err != nil { - return *new(IEigenPodCheckpoint), err + return *new(IEigenPodTypesCheckpoint), err } - out0 := *abi.ConvertType(out[0], new(IEigenPodCheckpoint)).(*IEigenPodCheckpoint) + out0 := *abi.ConvertType(out[0], new(IEigenPodTypesCheckpoint)).(*IEigenPodTypesCheckpoint) return out0, err @@ -477,15 +478,15 @@ func (_ContractEigenPod *ContractEigenPodCaller) CurrentCheckpoint(opts *bind.Ca // CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372. // -// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128)) -func (_ContractEigenPod *ContractEigenPodSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) { +// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64)) +func (_ContractEigenPod *ContractEigenPodSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) { return _ContractEigenPod.Contract.CurrentCheckpoint(&_ContractEigenPod.CallOpts) } // CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372. // -// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128)) -func (_ContractEigenPod *ContractEigenPodCallerSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) { +// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64)) +func (_ContractEigenPod *ContractEigenPodCallerSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) { return _ContractEigenPod.Contract.CurrentCheckpoint(&_ContractEigenPod.CallOpts) } @@ -709,15 +710,15 @@ func (_ContractEigenPod *ContractEigenPodCallerSession) ProofSubmitter() (common // ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53. // // Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8)) -func (_ContractEigenPod *ContractEigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) { +func (_ContractEigenPod *ContractEigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) { var out []interface{} err := _ContractEigenPod.contract.Call(opts, &out, "validatorPubkeyHashToInfo", validatorPubkeyHash) if err != nil { - return *new(IEigenPodValidatorInfo), err + return *new(IEigenPodTypesValidatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IEigenPodValidatorInfo)).(*IEigenPodValidatorInfo) + out0 := *abi.ConvertType(out[0], new(IEigenPodTypesValidatorInfo)).(*IEigenPodTypesValidatorInfo) return out0, err @@ -726,29 +727,29 @@ func (_ContractEigenPod *ContractEigenPodCaller) ValidatorPubkeyHashToInfo(opts // ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53. // // Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8)) -func (_ContractEigenPod *ContractEigenPodSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) { +func (_ContractEigenPod *ContractEigenPodSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) { return _ContractEigenPod.Contract.ValidatorPubkeyHashToInfo(&_ContractEigenPod.CallOpts, validatorPubkeyHash) } // ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53. // // Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8)) -func (_ContractEigenPod *ContractEigenPodCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) { +func (_ContractEigenPod *ContractEigenPodCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) { return _ContractEigenPod.Contract.ValidatorPubkeyHashToInfo(&_ContractEigenPod.CallOpts, validatorPubkeyHash) } // ValidatorPubkeyToInfo is a free data retrieval call binding the contract method 0xb522538a. // // Solidity: function validatorPubkeyToInfo(bytes validatorPubkey) view returns((uint64,uint64,uint64,uint8)) -func (_ContractEigenPod *ContractEigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodValidatorInfo, error) { +func (_ContractEigenPod *ContractEigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) { var out []interface{} err := _ContractEigenPod.contract.Call(opts, &out, "validatorPubkeyToInfo", validatorPubkey) if err != nil { - return *new(IEigenPodValidatorInfo), err + return *new(IEigenPodTypesValidatorInfo), err } - out0 := *abi.ConvertType(out[0], new(IEigenPodValidatorInfo)).(*IEigenPodValidatorInfo) + out0 := *abi.ConvertType(out[0], new(IEigenPodTypesValidatorInfo)).(*IEigenPodTypesValidatorInfo) return out0, err @@ -757,14 +758,14 @@ func (_ContractEigenPod *ContractEigenPodCaller) ValidatorPubkeyToInfo(opts *bin // ValidatorPubkeyToInfo is a free data retrieval call binding the contract method 0xb522538a. // // Solidity: function validatorPubkeyToInfo(bytes validatorPubkey) view returns((uint64,uint64,uint64,uint8)) -func (_ContractEigenPod *ContractEigenPodSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) { +func (_ContractEigenPod *ContractEigenPodSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) { return _ContractEigenPod.Contract.ValidatorPubkeyToInfo(&_ContractEigenPod.CallOpts, validatorPubkey) } // ValidatorPubkeyToInfo is a free data retrieval call binding the contract method 0xb522538a. // // Solidity: function validatorPubkeyToInfo(bytes validatorPubkey) view returns((uint64,uint64,uint64,uint8)) -func (_ContractEigenPod *ContractEigenPodCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) { +func (_ContractEigenPod *ContractEigenPodCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) { return _ContractEigenPod.Contract.ValidatorPubkeyToInfo(&_ContractEigenPod.CallOpts, validatorPubkey) } diff --git a/contracts/bindings/EigenPodManager/binding.go b/contracts/bindings/EigenPodManager/binding.go index 1338942b..070e1078 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\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"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\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"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\":\"\",\"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\":\"podOwnerShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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}]", - Bin: "0x6101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a2646970667358221220ab15fe92e05748fd03441d98a7837905194deb492a89f580b320661f7cb8204164736f6c634300080c0033", + 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\"}],\"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\":[],\"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\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"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\":\"\",\"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\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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: "0x61010060405234801561001157600080fd5b506040516128fc3803806128fc83398101604081905261003091610137565b6001600160a01b0380851660805280841660a05280831660c052811660e052610057610060565b50505050610196565b600054610100900460ff16156100cc5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461011d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013457600080fd5b50565b6000806000806080858703121561014d57600080fd5b84516101588161011f565b60208601519094506101698161011f565b604086015190935061017a8161011f565b606086015190925061018b8161011f565b939692955090935050565b60805160a05160c05160e0516126fc610200600039600081816105190152818161072f01528181610a6b01528181610d78015281816110ab015261147e015260006102c10152600081816102500152818161102801526117510152600061039e01526126fc6000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063c4623ea11161008a578063f2fde38b11610064578063f2fde38b1461053b578063f6848d241461055b578063fabc1cbc14610596578063fe243a17146105b657600080fd5b8063c4623ea1146104ba578063d48e8894146104da578063ea4d3c9b1461050757600080fd5b80639b4e4634116100c65780639b4e46341461043b5780639ba062751461044e578063a38406a314610484578063a6a509be146104a457600080fd5b8063886f1195146103d55780638da5cb5b146103f55780639104c3191461041357600080fd5b8063595c6a6711610159578063715018a611610133578063715018a614610357578063724af4231461036c57806374cdd7981461038c57806384d81062146103c057600080fd5b8063595c6a67146102e35780635ac86ab7146102f85780635c975abb1461033857600080fd5b80631794bb3c116101955780631794bb3c1461021e578063292b7b2b1461023e5780632eae418c1461028f57806339b70e38146102af57600080fd5b8063095e210c146101bc57806310d67a2f146101de578063136439dd146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046119c5565b6105d6565b005b3480156101ea57600080fd5b506101dc6101f9366004611a14565b61079e565b34801561020a57600080fd5b506101dc610219366004611a31565b610852565b34801561022a57600080fd5b506101dc610239366004611a4a565b61093d565b34801561024a57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029b57600080fd5b506101dc6102aa366004611a8b565b610a60565b3480156102bb57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ef57600080fd5b506101dc610c91565b34801561030457600080fd5b50610328610313366004611adc565b606654600160ff9092169190911b9081161490565b6040519015158152602001610286565b34801561034457600080fd5b506066545b604051908152602001610286565b34801561036357600080fd5b506101dc610d59565b34801561037857600080fd5b506101dc610387366004611a4a565b610d6d565b34801561039857600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b3480156103cc57600080fd5b50610272610e96565b3480156103e157600080fd5b50606554610272906001600160a01b031681565b34801561040157600080fd5b506033546001600160a01b0316610272565b34801561041f57600080fd5b5061027273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101dc610449366004611b48565b610f09565b34801561045a57600080fd5b50610272610469366004611a14565b6098602052600090815260409020546001600160a01b031681565b34801561049057600080fd5b5061027261049f366004611a14565b610fcc565b3480156104b057600080fd5b5061034960995481565b3480156104c657600080fd5b506101dc6104d5366004611a8b565b6110a0565b3480156104e657600080fd5b506103496104f5366004611a14565b609b6020526000908152604090205481565b34801561051357600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561054757600080fd5b506101dc610556366004611a14565b611130565b34801561056757600080fd5b50610328610576366004611a14565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105a257600080fd5b506101dc6105b1366004611a31565b6111a6565b3480156105c257600080fd5b506103496105d1366004611bc1565b6112ae565b6001600160a01b038084166000908152609860205260409020548491163314610612576040516312e16d7160e11b815260040160405180910390fd5b61061a611332565b6001600160a01b038416610641576040516339b190bb60e11b815260040160405180910390fd5b61064f633b9aca0084611bfa565b1561066d576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384166000908152609b602052604081205412156106a557604051634b692bcf60e01b815260040160405180910390fd5b60008313156106bd576106b8848461138b565b61078e565b6000831280156106e357506001600160a01b0384166000908152609b6020526040812054135b1561078e576001600160a01b038481166000818152609b602052604090819020549051635d9aed2360e01b81526004810192909252602482015267ffffffffffffffff841660448201527f000000000000000000000000000000000000000000000000000000000000000090911690635d9aed2390606401600060405180830381600087803b15801561077557600080fd5b505af1158015610789573d6000803e3d6000fd5b505050505b610798600160c955565b50505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108159190611c1c565b6001600160a01b0316336001600160a01b0316146108465760405163794821ff60e01b815260040160405180910390fd5b61084f81611548565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be9190611c39565b6108db57604051631d77d47760e21b815260040160405180910390fd5b606654818116146108ff5760405163c61dca5d60e01b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff161580801561095d5750600054600160ff909116105b806109775750303b158015610977575060005460ff166001145b6109df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a02576000805461ff0019166101001790555b610a0b846115d8565b610a15838361162a565b8015610798576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa95760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610ae657604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b038416610b0d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0384166000908152609b60205260408120549080821215610c0c576000610b3a83611c71565b9050600081851115610b59575080610b528186611c8d565b9250610b60565b5060009150835b6000610b6c8286611ca0565b6001600160a01b038a166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c619390610bbd9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709882604051610c0091815260200190565b60405180910390a25050505b8015610c89576001600160a01b03868116600081815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c490744290604401600060405180830381600087803b158015610c7057600080fd5b505af1158015610c84573d6000803e3d6000fd5b505050505b505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfd9190611c39565b610d1a57604051631d77d47760e21b815260040160405180910390fd5b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610d616116af565b610d6b60006115d8565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610db65760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610df357604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b6020526040812054610e17908390611cc8565b90506000811215610e3b5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610e889084815260200190565b60405180910390a250505050565b6066546000908190600190811603610ec15760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031615610ef85760405163031a852160e21b815260040160405180910390fd5b6000610f02611709565b9250505090565b606654600090600190811603610f325760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031680610f5b57610f58611709565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610f91908b908b908b908b908b90600401611d18565b6000604051808303818588803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061109a57611097836001600160a01b031660001b60405180610940016040528061090e8152602001611db961090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f198184030181529082905261107c9291602001611d82565b6040516020818303038152906040528051906020012061186e565b90505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110e95760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461112657604051632711b74d60e11b815260040160405180910390fd5b610798848261138b565b6111386116af565b6001600160a01b03811661119d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d6565b61084f816115d8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121d9190611c1c565b6001600160a01b0316336001600160a01b03161461124e5760405163794821ff60e01b815260040160405180910390fd5b6066541981196066541916146112775760405163c61dca5d60e01b815260040160405180910390fd5b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610932565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146112ed57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b602052604081205412611329576001600160a01b0383166000908152609b6020526040902054611097565b50600092915050565b600260c954036113845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109d6565b600260c955565b6001600160a01b0382166113b2576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382166000908152609b602052604081205482916113d78383611ca0565b6001600160a01b0386166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906114289086815260200190565b60405180910390a2846001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161146b91815260200190565b60405180910390a26000811315611541577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633c651cf28673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0600086126114cf57856114d2565b60005b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152604482015260648101879052608401600060405180830381600087803b15801561152857600080fd5b505af115801561153c573d6000803e3d6000fd5b505050505b5050505050565b6001600160a01b03811661156f576040516339b190bb60e11b815260040160405180910390fd5b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b031615801561164b57506001600160a01b03821615155b611668576040516339b190bb60e11b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26116ab82611548565b5050565b6033546001600160a01b03163314610d6b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d6565b600060996000815461171a90611d9f565b9091555060408051610940810190915261090e8082526000916117b99183913391611db96020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526117a59291602001611d82565b60405160208183030381529060405261187b565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b6000611097838330611986565b6000834710156118cd5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016109d6565b815160000361191e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016109d6565b8282516020840186f590506001600160a01b03811661197f5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016109d6565b9392505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b038116811461084f57600080fd5b6000806000606084860312156119da57600080fd5b83356119e5816119b0565b925060208401359150604084013567ffffffffffffffff81168114611a0957600080fd5b809150509250925092565b600060208284031215611a2657600080fd5b813561197f816119b0565b600060208284031215611a4357600080fd5b5035919050565b600080600060608486031215611a5f57600080fd5b8335611a6a816119b0565b92506020840135611a7a816119b0565b929592945050506040919091013590565b60008060008060808587031215611aa157600080fd5b8435611aac816119b0565b93506020850135611abc816119b0565b92506040850135611acc816119b0565b9396929550929360600135925050565b600060208284031215611aee57600080fd5b813560ff8116811461197f57600080fd5b60008083601f840112611b1157600080fd5b50813567ffffffffffffffff811115611b2957600080fd5b602083019150836020828501011115611b4157600080fd5b9250929050565b600080600080600060608688031215611b6057600080fd5b853567ffffffffffffffff811115611b7757600080fd5b611b8388828901611aff565b909650945050602086013567ffffffffffffffff811115611ba357600080fd5b611baf88828901611aff565b96999598509660400135949350505050565b60008060408385031215611bd457600080fd5b8235611bdf816119b0565b91506020830135611bef816119b0565b809150509250929050565b600082611c1757634e487b7160e01b600052601260045260246000fd5b500790565b600060208284031215611c2e57600080fd5b815161197f816119b0565b600060208284031215611c4b57600080fd5b8151801515811461197f57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201611c8657611c86611c5b565b5060000390565b8181038181111561109a5761109a611c5b565b8082018281126000831280158216821582161715611cc057611cc0611c5b565b505092915050565b8181036000831280158383131683831282161715611ce857611ce8611c5b565b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000611d2c606083018789611cef565b8281036020840152611d3f818688611cef565b9150508260408301529695505050505050565b6000815160005b81811015611d735760208185018101518683015201611d59565b50600093019283525090919050565b6000611d97611d918386611d52565b84611d52565b949350505050565b600060018201611db157611db1611c5b565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f9e7081d3758e5ae60c6cdb8c20cb432ce124c67b2fe1aaf10492b2f8bae26d064736f6c634300081b0033", } // ContractEigenPodManagerABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ContractEigenPodManagerABI = ContractEigenPodManagerMetaData.ABI var ContractEigenPodManagerBin = ContractEigenPodManagerMetaData.Bin // DeployContractEigenPodManager deploys a new Ethereum contract, binding an instance of ContractEigenPodManager to it. -func DeployContractEigenPodManager(auth *bind.TransactOpts, backend bind.ContractBackend, _ethPOS common.Address, _eigenPodBeacon common.Address, _strategyManager common.Address, _slasher common.Address, _delegationManager common.Address) (common.Address, *types.Transaction, *ContractEigenPodManager, error) { +func DeployContractEigenPodManager(auth *bind.TransactOpts, backend bind.ContractBackend, _ethPOS common.Address, _eigenPodBeacon common.Address, _strategyManager common.Address, _delegationManager common.Address) (common.Address, *types.Transaction, *ContractEigenPodManager, error) { parsed, err := ContractEigenPodManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployContractEigenPodManager(auth *bind.TransactOpts, backend bind.Contrac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenPodManagerBin), backend, _ethPOS, _eigenPodBeacon, _strategyManager, _slasher, _delegationManager) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenPodManagerBin), backend, _ethPOS, _eigenPodBeacon, _strategyManager, _delegationManager) if err != nil { return common.Address{}, nil, nil, err } @@ -93,16 +93,16 @@ type ContractEigenPodManagerCalls interface { PauserRegistry(opts *bind.CallOpts) (common.Address, error) - PodOwnerShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) + PodOwnerDepositShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) - Slasher(opts *bind.CallOpts) (common.Address, error) + StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) StrategyManager(opts *bind.CallOpts) (common.Address, error) } // ContractEigenPodManagerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractEigenPodManagerTransacts interface { - AddShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) + AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) CreatePod(opts *bind.TransactOpts) (*types.Transaction, error) @@ -112,9 +112,9 @@ type ContractEigenPodManagerTransacts interface { PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) - RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) + RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int, proportionOfOldBalance uint64) (*types.Transaction, error) - RemoveShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) + RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) @@ -126,7 +126,7 @@ type ContractEigenPodManagerTransacts interface { Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) - WithdrawSharesAsTokens(opts *bind.TransactOpts, podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) + WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) } // ContractEigenPodManagerFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. @@ -698,12 +698,12 @@ func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) PauserRegi return _ContractEigenPodManager.Contract.PauserRegistry(&_ContractEigenPodManager.CallOpts) } -// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// PodOwnerDepositShares is a free data retrieval call binding the contract method 0xd48e8894. // -// Solidity: function podOwnerShares(address ) view returns(int256) -func (_ContractEigenPodManager *ContractEigenPodManagerCaller) PodOwnerShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function podOwnerDepositShares(address ) view returns(int256) +func (_ContractEigenPodManager *ContractEigenPodManagerCaller) PodOwnerDepositShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} - err := _ContractEigenPodManager.contract.Call(opts, &out, "podOwnerShares", arg0) + err := _ContractEigenPodManager.contract.Call(opts, &out, "podOwnerDepositShares", arg0) if err != nil { return *new(*big.Int), err @@ -715,49 +715,49 @@ func (_ContractEigenPodManager *ContractEigenPodManagerCaller) PodOwnerShares(op } -// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// PodOwnerDepositShares is a free data retrieval call binding the contract method 0xd48e8894. // -// Solidity: function podOwnerShares(address ) view returns(int256) -func (_ContractEigenPodManager *ContractEigenPodManagerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) { - return _ContractEigenPodManager.Contract.PodOwnerShares(&_ContractEigenPodManager.CallOpts, arg0) +// Solidity: function podOwnerDepositShares(address ) view returns(int256) +func (_ContractEigenPodManager *ContractEigenPodManagerSession) PodOwnerDepositShares(arg0 common.Address) (*big.Int, error) { + return _ContractEigenPodManager.Contract.PodOwnerDepositShares(&_ContractEigenPodManager.CallOpts, arg0) } -// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// PodOwnerDepositShares is a free data retrieval call binding the contract method 0xd48e8894. // -// Solidity: function podOwnerShares(address ) view returns(int256) -func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) { - return _ContractEigenPodManager.Contract.PodOwnerShares(&_ContractEigenPodManager.CallOpts, arg0) +// Solidity: function podOwnerDepositShares(address ) view returns(int256) +func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) PodOwnerDepositShares(arg0 common.Address) (*big.Int, error) { + return _ContractEigenPodManager.Contract.PodOwnerDepositShares(&_ContractEigenPodManager.CallOpts, arg0) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17. // -// Solidity: function slasher() view returns(address) -func (_ContractEigenPodManager *ContractEigenPodManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares) +func (_ContractEigenPodManager *ContractEigenPodManagerCaller) StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) { var out []interface{} - err := _ContractEigenPodManager.contract.Call(opts, &out, "slasher") + err := _ContractEigenPodManager.contract.Call(opts, &out, "stakerDepositShares", user, strategy) if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17. // -// Solidity: function slasher() view returns(address) -func (_ContractEigenPodManager *ContractEigenPodManagerSession) Slasher() (common.Address, error) { - return _ContractEigenPodManager.Contract.Slasher(&_ContractEigenPodManager.CallOpts) +// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares) +func (_ContractEigenPodManager *ContractEigenPodManagerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) { + return _ContractEigenPodManager.Contract.StakerDepositShares(&_ContractEigenPodManager.CallOpts, user, strategy) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17. // -// Solidity: function slasher() view returns(address) -func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) Slasher() (common.Address, error) { - return _ContractEigenPodManager.Contract.Slasher(&_ContractEigenPodManager.CallOpts) +// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares) +func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) { + return _ContractEigenPodManager.Contract.StakerDepositShares(&_ContractEigenPodManager.CallOpts, user, strategy) } // StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. @@ -791,25 +791,25 @@ func (_ContractEigenPodManager *ContractEigenPodManagerCallerSession) StrategyMa return _ContractEigenPodManager.Contract.StrategyManager(&_ContractEigenPodManager.CallOpts) } -// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. // -// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256) -func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) AddShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.contract.Transact(opts, "addShares", podOwner, shares) +// Solidity: function addShares(address staker, address strategy, address , uint256 shares) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.contract.Transact(opts, "addShares", staker, strategy, arg2, shares) } -// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. // -// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256) -func (_ContractEigenPodManager *ContractEigenPodManagerSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.AddShares(&_ContractEigenPodManager.TransactOpts, podOwner, shares) +// Solidity: function addShares(address staker, address strategy, address , uint256 shares) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerSession) AddShares(staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.AddShares(&_ContractEigenPodManager.TransactOpts, staker, strategy, arg2, shares) } -// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. // -// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256) -func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.AddShares(&_ContractEigenPodManager.TransactOpts, podOwner, shares) +// Solidity: function addShares(address staker, address strategy, address , uint256 shares) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.AddShares(&_ContractEigenPodManager.TransactOpts, staker, strategy, arg2, shares) } // CreatePod is a paid mutator transaction binding the contract method 0x84d81062. @@ -896,46 +896,46 @@ func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) PauseA return _ContractEigenPodManager.Contract.PauseAll(&_ContractEigenPodManager.TransactOpts) } -// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0x095e210c. // -// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, sharesDelta) +// 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) } -// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0x095e210c. // -// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_ContractEigenPodManager.TransactOpts, podOwner, sharesDelta) +// 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) } -// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0x095e210c. // -// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_ContractEigenPodManager.TransactOpts, podOwner, sharesDelta) +// 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) } -// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. // -// Solidity: function removeShares(address podOwner, uint256 shares) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) RemoveShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.contract.Transact(opts, "removeShares", podOwner, shares) +// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.contract.Transact(opts, "removeDepositShares", staker, strategy, depositSharesToRemove) } -// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. // -// Solidity: function removeShares(address podOwner, uint256 shares) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.RemoveShares(&_ContractEigenPodManager.TransactOpts, podOwner, shares) +// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.RemoveDepositShares(&_ContractEigenPodManager.TransactOpts, staker, strategy, depositSharesToRemove) } -// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. // -// Solidity: function removeShares(address podOwner, uint256 shares) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.RemoveShares(&_ContractEigenPodManager.TransactOpts, podOwner, shares) +// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.RemoveDepositShares(&_ContractEigenPodManager.TransactOpts, staker, strategy, depositSharesToRemove) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -1043,25 +1043,25 @@ func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) Unpaus return _ContractEigenPodManager.Contract.Unpause(&_ContractEigenPodManager.TransactOpts, newPausedStatus) } -// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c. // -// Solidity: function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.contract.Transact(opts, "withdrawSharesAsTokens", podOwner, destination, shares) +// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address , uint256 shares) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, arg2, shares) } -// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c. // -// Solidity: function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.WithdrawSharesAsTokens(&_ContractEigenPodManager.TransactOpts, podOwner, destination, shares) +// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address , uint256 shares) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.WithdrawSharesAsTokens(&_ContractEigenPodManager.TransactOpts, staker, strategy, arg2, shares) } -// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c. // -// Solidity: function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) returns() -func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractEigenPodManager.Contract.WithdrawSharesAsTokens(&_ContractEigenPodManager.TransactOpts, podOwner, destination, shares) +// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address , uint256 shares) returns() +func (_ContractEigenPodManager *ContractEigenPodManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractEigenPodManager.Contract.WithdrawSharesAsTokens(&_ContractEigenPodManager.TransactOpts, staker, strategy, arg2, shares) } // ContractEigenPodManagerBeaconChainETHDepositedIterator is returned from FilterBeaconChainETHDeposited and is used to iterate over the raw logs and unpacked data for BeaconChainETHDeposited events raised by the ContractEigenPodManager contract. diff --git a/contracts/bindings/IAVSDirectory/binding.go b/contracts/bindings/IAVSDirectory/binding.go index 07a95caf..f78c6b21 100644 --- a/contracts/bindings/IAVSDirectory/binding.go +++ b/contracts/bindings/IAVSDirectory/binding.go @@ -29,12 +29,6 @@ var ( _ = abi.ConvertType ) -// IAVSDirectoryOperatorSet is an auto generated low-level Go binding around an user-defined struct. -type IAVSDirectoryOperatorSet struct { - Avs common.Address - OperatorSetId uint32 -} - // ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. type ISignatureUtilsSignatureWithSaltAndExpiry struct { Signature []byte @@ -42,9 +36,15 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { Expiry *big.Int } +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + OperatorSetId uint32 +} + // ContractIAVSDirectoryMetaData contains all meta data concerning the ContractIAVSDirectory contract. var ContractIAVSDirectoryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_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\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"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\":\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"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\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_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\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"getNumOperatorSetsOfOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNumOperatorsInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetsOfOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorsInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inTotalOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetBatch\",\"inputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetMemberAtIndex\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetStatus\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"registered\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastDeregisteredTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetsMemberOfAtIndex\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"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\":\"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\":\"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\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"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\":\"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\":\"operatorSetId\",\"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\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"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\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"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\":[]}]", } // ContractIAVSDirectoryABI is the input ABI used to generate the binding from. @@ -70,19 +70,44 @@ type ContractIAVSDirectoryCalls interface { CalculateOperatorSetRegistrationDigestHash(opts *bind.CallOpts, avs common.Address, operatorSetIds []uint32, salt [32]byte, expiry *big.Int) ([32]byte, error) - DomainSeparator(opts *bind.CallOpts) ([32]byte, error) + GetNumOperatorSetsOfOperator(opts *bind.CallOpts, operator common.Address) (*big.Int, error) + + GetNumOperatorsInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) (*big.Int, error) + + GetOperatorSetsOfOperator(opts *bind.CallOpts, operator common.Address, start *big.Int, length *big.Int) ([]OperatorSet, error) + + GetOperatorsInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet, start *big.Int, length *big.Int) ([]common.Address, error) - IsMember(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) + GetStrategiesInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) + + InTotalOperatorSets(opts *bind.CallOpts, operator common.Address) (*big.Int, error) + + IsMember(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) IsOperatorSet(opts *bind.CallOpts, avs common.Address, operatorSetId uint32) (bool, error) IsOperatorSetAVS(opts *bind.CallOpts, avs common.Address) (bool, error) + IsOperatorSetBatch(opts *bind.CallOpts, operatorSets []OperatorSet) (bool, error) + + IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) + OperatorSaltIsSpent(opts *bind.CallOpts, operator common.Address, salt [32]byte) (bool, error) + + OperatorSetMemberAtIndex(opts *bind.CallOpts, operatorSet OperatorSet, index *big.Int) (common.Address, error) + + OperatorSetStatus(opts *bind.CallOpts, avs common.Address, operator common.Address, operatorSetId uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 + }, error) + + OperatorSetsMemberOfAtIndex(opts *bind.CallOpts, operator common.Address, index *big.Int) (OperatorSet, error) } // ContractIAVSDirectoryTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractIAVSDirectoryTransacts interface { + AddStrategiesToOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) + BecomeOperatorSetAVS(opts *bind.TransactOpts) (*types.Transaction, error) CancelSalt(opts *bind.TransactOpts, salt [32]byte) (*types.Transaction, error) @@ -95,12 +120,16 @@ type ContractIAVSDirectoryTransacts interface { ForceDeregisterFromOperatorSets(opts *bind.TransactOpts, operator common.Address, avs common.Address, operatorSetIds []uint32, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) + Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) + MigrateOperatorsToOperatorSets(opts *bind.TransactOpts, operators []common.Address, operatorSetIds [][]uint32) (*types.Transaction, error) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) RegisterOperatorToOperatorSets(opts *bind.TransactOpts, operator common.Address, operatorSetIds []uint32, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) + RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) + UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) } @@ -133,6 +162,14 @@ type ContractIAVSDirectoryFilters interface { FilterOperatorSetCreated(opts *bind.FilterOpts) (*ContractIAVSDirectoryOperatorSetCreatedIterator, error) WatchOperatorSetCreated(opts *bind.WatchOpts, sink chan<- *ContractIAVSDirectoryOperatorSetCreated) (event.Subscription, error) ParseOperatorSetCreated(log types.Log) (*ContractIAVSDirectoryOperatorSetCreated, error) + + FilterStrategyAddedToOperatorSet(opts *bind.FilterOpts) (*ContractIAVSDirectoryStrategyAddedToOperatorSetIterator, error) + WatchStrategyAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *ContractIAVSDirectoryStrategyAddedToOperatorSet) (event.Subscription, error) + ParseStrategyAddedToOperatorSet(log types.Log) (*ContractIAVSDirectoryStrategyAddedToOperatorSet, error) + + FilterStrategyRemovedFromOperatorSet(opts *bind.FilterOpts) (*ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator, error) + WatchStrategyRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *ContractIAVSDirectoryStrategyRemovedFromOperatorSet) (event.Subscription, error) + ParseStrategyRemovedFromOperatorSet(log types.Log) (*ContractIAVSDirectoryStrategyRemovedFromOperatorSet, error) } // ContractIAVSDirectory is an auto generated Go binding around an Ethereum contract. @@ -444,41 +481,196 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) CalculateOpera return _ContractIAVSDirectory.Contract.CalculateOperatorSetRegistrationDigestHash(&_ContractIAVSDirectory.CallOpts, avs, operatorSetIds, salt, expiry) } -// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// GetNumOperatorSetsOfOperator is a free data retrieval call binding the contract method 0xe88d8049. // -// Solidity: function domainSeparator() view returns(bytes32) -func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function getNumOperatorSetsOfOperator(address operator) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) GetNumOperatorSetsOfOperator(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { var out []interface{} - err := _ContractIAVSDirectory.contract.Call(opts, &out, "domainSeparator") + err := _ContractIAVSDirectory.contract.Call(opts, &out, "getNumOperatorSetsOfOperator", operator) if err != nil { - return *new([32]byte), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetNumOperatorSetsOfOperator is a free data retrieval call binding the contract method 0xe88d8049. +// +// Solidity: function getNumOperatorSetsOfOperator(address operator) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) GetNumOperatorSetsOfOperator(operator common.Address) (*big.Int, error) { + return _ContractIAVSDirectory.Contract.GetNumOperatorSetsOfOperator(&_ContractIAVSDirectory.CallOpts, operator) +} + +// GetNumOperatorSetsOfOperator is a free data retrieval call binding the contract method 0xe88d8049. +// +// Solidity: function getNumOperatorSetsOfOperator(address operator) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) GetNumOperatorSetsOfOperator(operator common.Address) (*big.Int, error) { + return _ContractIAVSDirectory.Contract.GetNumOperatorSetsOfOperator(&_ContractIAVSDirectory.CallOpts, operator) +} + +// GetNumOperatorsInOperatorSet is a free data retrieval call binding the contract method 0x1023aa35. +// +// Solidity: function getNumOperatorsInOperatorSet((address,uint32) operatorSet) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) GetNumOperatorsInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) (*big.Int, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "getNumOperatorsInOperatorSet", operatorSet) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetNumOperatorsInOperatorSet is a free data retrieval call binding the contract method 0x1023aa35. +// +// Solidity: function getNumOperatorsInOperatorSet((address,uint32) operatorSet) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) GetNumOperatorsInOperatorSet(operatorSet OperatorSet) (*big.Int, error) { + return _ContractIAVSDirectory.Contract.GetNumOperatorsInOperatorSet(&_ContractIAVSDirectory.CallOpts, operatorSet) +} + +// GetNumOperatorsInOperatorSet is a free data retrieval call binding the contract method 0x1023aa35. +// +// Solidity: function getNumOperatorsInOperatorSet((address,uint32) operatorSet) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) GetNumOperatorsInOperatorSet(operatorSet OperatorSet) (*big.Int, error) { + return _ContractIAVSDirectory.Contract.GetNumOperatorsInOperatorSet(&_ContractIAVSDirectory.CallOpts, operatorSet) +} + +// GetOperatorSetsOfOperator is a free data retrieval call binding the contract method 0x16ae76cb. +// +// Solidity: function getOperatorSetsOfOperator(address operator, uint256 start, uint256 length) view returns((address,uint32)[] operatorSets) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) GetOperatorSetsOfOperator(opts *bind.CallOpts, operator common.Address, start *big.Int, length *big.Int) ([]OperatorSet, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "getOperatorSetsOfOperator", operator, start, length) + + if err != nil { + return *new([]OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + + return out0, err + +} + +// GetOperatorSetsOfOperator is a free data retrieval call binding the contract method 0x16ae76cb. +// +// Solidity: function getOperatorSetsOfOperator(address operator, uint256 start, uint256 length) view returns((address,uint32)[] operatorSets) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) GetOperatorSetsOfOperator(operator common.Address, start *big.Int, length *big.Int) ([]OperatorSet, error) { + return _ContractIAVSDirectory.Contract.GetOperatorSetsOfOperator(&_ContractIAVSDirectory.CallOpts, operator, start, length) +} + +// GetOperatorSetsOfOperator is a free data retrieval call binding the contract method 0x16ae76cb. +// +// Solidity: function getOperatorSetsOfOperator(address operator, uint256 start, uint256 length) view returns((address,uint32)[] operatorSets) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) GetOperatorSetsOfOperator(operator common.Address, start *big.Int, length *big.Int) ([]OperatorSet, error) { + return _ContractIAVSDirectory.Contract.GetOperatorSetsOfOperator(&_ContractIAVSDirectory.CallOpts, operator, start, length) +} + +// GetOperatorsInOperatorSet is a free data retrieval call binding the contract method 0x7357723b. +// +// Solidity: function getOperatorsInOperatorSet((address,uint32) operatorSet, uint256 start, uint256 length) view returns(address[] operators) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) GetOperatorsInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet, start *big.Int, length *big.Int) ([]common.Address, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "getOperatorsInOperatorSet", operatorSet, start, length) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetOperatorsInOperatorSet is a free data retrieval call binding the contract method 0x7357723b. +// +// Solidity: function getOperatorsInOperatorSet((address,uint32) operatorSet, uint256 start, uint256 length) view returns(address[] operators) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) GetOperatorsInOperatorSet(operatorSet OperatorSet, start *big.Int, length *big.Int) ([]common.Address, error) { + return _ContractIAVSDirectory.Contract.GetOperatorsInOperatorSet(&_ContractIAVSDirectory.CallOpts, operatorSet, start, length) +} + +// GetOperatorsInOperatorSet is a free data retrieval call binding the contract method 0x7357723b. +// +// Solidity: function getOperatorsInOperatorSet((address,uint32) operatorSet, uint256 start, uint256 length) view returns(address[] operators) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) GetOperatorsInOperatorSet(operatorSet OperatorSet, start *big.Int, length *big.Int) ([]common.Address, error) { + return _ContractIAVSDirectory.Contract.GetOperatorsInOperatorSet(&_ContractIAVSDirectory.CallOpts, operatorSet, start, length) +} + +// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c. +// +// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[] strategies) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) GetStrategiesInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "getStrategiesInOperatorSet", operatorSet) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c. +// +// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[] strategies) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) { + return _ContractIAVSDirectory.Contract.GetStrategiesInOperatorSet(&_ContractIAVSDirectory.CallOpts, operatorSet) +} + +// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c. +// +// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[] strategies) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) { + return _ContractIAVSDirectory.Contract.GetStrategiesInOperatorSet(&_ContractIAVSDirectory.CallOpts, operatorSet) +} + +// InTotalOperatorSets is a free data retrieval call binding the contract method 0xcbdf0e42. +// +// Solidity: function inTotalOperatorSets(address operator) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) InTotalOperatorSets(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "inTotalOperatorSets", operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// InTotalOperatorSets is a free data retrieval call binding the contract method 0xcbdf0e42. // -// Solidity: function domainSeparator() view returns(bytes32) -func (_ContractIAVSDirectory *ContractIAVSDirectorySession) DomainSeparator() ([32]byte, error) { - return _ContractIAVSDirectory.Contract.DomainSeparator(&_ContractIAVSDirectory.CallOpts) +// Solidity: function inTotalOperatorSets(address operator) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) InTotalOperatorSets(operator common.Address) (*big.Int, error) { + return _ContractIAVSDirectory.Contract.InTotalOperatorSets(&_ContractIAVSDirectory.CallOpts, operator) } -// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// InTotalOperatorSets is a free data retrieval call binding the contract method 0xcbdf0e42. // -// Solidity: function domainSeparator() view returns(bytes32) -func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) DomainSeparator() ([32]byte, error) { - return _ContractIAVSDirectory.Contract.DomainSeparator(&_ContractIAVSDirectory.CallOpts) +// Solidity: function inTotalOperatorSets(address operator) view returns(uint256) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) InTotalOperatorSets(operator common.Address) (*big.Int, error) { + return _ContractIAVSDirectory.Contract.InTotalOperatorSets(&_ContractIAVSDirectory.CallOpts, operator) } // IsMember is a free data retrieval call binding the contract method 0xda2ff05d. // // Solidity: function isMember(address operator, (address,uint32) operatorSet) view returns(bool) -func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) IsMember(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) IsMember(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) { var out []interface{} err := _ContractIAVSDirectory.contract.Call(opts, &out, "isMember", operator, operatorSet) @@ -495,14 +687,14 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) IsMember(opts *bind.C // IsMember is a free data retrieval call binding the contract method 0xda2ff05d. // // Solidity: function isMember(address operator, (address,uint32) operatorSet) view returns(bool) -func (_ContractIAVSDirectory *ContractIAVSDirectorySession) IsMember(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) IsMember(operator common.Address, operatorSet OperatorSet) (bool, error) { return _ContractIAVSDirectory.Contract.IsMember(&_ContractIAVSDirectory.CallOpts, operator, operatorSet) } // IsMember is a free data retrieval call binding the contract method 0xda2ff05d. // // Solidity: function isMember(address operator, (address,uint32) operatorSet) view returns(bool) -func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) IsMember(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) IsMember(operator common.Address, operatorSet OperatorSet) (bool, error) { return _ContractIAVSDirectory.Contract.IsMember(&_ContractIAVSDirectory.CallOpts, operator, operatorSet) } @@ -568,6 +760,68 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) IsOperatorSetA return _ContractIAVSDirectory.Contract.IsOperatorSetAVS(&_ContractIAVSDirectory.CallOpts, avs) } +// IsOperatorSetBatch is a free data retrieval call binding the contract method 0x20c4e236. +// +// Solidity: function isOperatorSetBatch((address,uint32)[] operatorSets) view returns(bool) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) IsOperatorSetBatch(opts *bind.CallOpts, operatorSets []OperatorSet) (bool, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "isOperatorSetBatch", operatorSets) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperatorSetBatch is a free data retrieval call binding the contract method 0x20c4e236. +// +// Solidity: function isOperatorSetBatch((address,uint32)[] operatorSets) view returns(bool) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) IsOperatorSetBatch(operatorSets []OperatorSet) (bool, error) { + return _ContractIAVSDirectory.Contract.IsOperatorSetBatch(&_ContractIAVSDirectory.CallOpts, operatorSets) +} + +// IsOperatorSetBatch is a free data retrieval call binding the contract method 0x20c4e236. +// +// Solidity: function isOperatorSetBatch((address,uint32)[] operatorSets) view returns(bool) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) IsOperatorSetBatch(operatorSets []OperatorSet) (bool, error) { + return _ContractIAVSDirectory.Contract.IsOperatorSetBatch(&_ContractIAVSDirectory.CallOpts, operatorSets) +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "isOperatorSlashable", operator, operatorSet) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) { + return _ContractIAVSDirectory.Contract.IsOperatorSlashable(&_ContractIAVSDirectory.CallOpts, operator, operatorSet) +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) { + return _ContractIAVSDirectory.Contract.IsOperatorSlashable(&_ContractIAVSDirectory.CallOpts, operator, operatorSet) +} + // OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. // // Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool) @@ -599,6 +853,134 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) OperatorSaltIs return _ContractIAVSDirectory.Contract.OperatorSaltIsSpent(&_ContractIAVSDirectory.CallOpts, operator, salt) } +// OperatorSetMemberAtIndex is a free data retrieval call binding the contract method 0x411d415b. +// +// Solidity: function operatorSetMemberAtIndex((address,uint32) operatorSet, uint256 index) view returns(address) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) OperatorSetMemberAtIndex(opts *bind.CallOpts, operatorSet OperatorSet, index *big.Int) (common.Address, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "operatorSetMemberAtIndex", operatorSet, index) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorSetMemberAtIndex is a free data retrieval call binding the contract method 0x411d415b. +// +// Solidity: function operatorSetMemberAtIndex((address,uint32) operatorSet, uint256 index) view returns(address) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) OperatorSetMemberAtIndex(operatorSet OperatorSet, index *big.Int) (common.Address, error) { + return _ContractIAVSDirectory.Contract.OperatorSetMemberAtIndex(&_ContractIAVSDirectory.CallOpts, operatorSet, index) +} + +// OperatorSetMemberAtIndex is a free data retrieval call binding the contract method 0x411d415b. +// +// Solidity: function operatorSetMemberAtIndex((address,uint32) operatorSet, uint256 index) view returns(address) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) OperatorSetMemberAtIndex(operatorSet OperatorSet, index *big.Int) (common.Address, error) { + return _ContractIAVSDirectory.Contract.OperatorSetMemberAtIndex(&_ContractIAVSDirectory.CallOpts, operatorSet, index) +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address avs, address operator, uint32 operatorSetId) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) OperatorSetStatus(opts *bind.CallOpts, avs common.Address, operator common.Address, operatorSetId uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "operatorSetStatus", avs, operator, operatorSetId) + + outstruct := new(struct { + Registered bool + LastDeregisteredTimestamp uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Registered = *abi.ConvertType(out[0], new(bool)).(*bool) + outstruct.LastDeregisteredTimestamp = *abi.ConvertType(out[1], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address avs, address operator, uint32 operatorSetId) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) OperatorSetStatus(avs common.Address, operator common.Address, operatorSetId uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + return _ContractIAVSDirectory.Contract.OperatorSetStatus(&_ContractIAVSDirectory.CallOpts, avs, operator, operatorSetId) +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address avs, address operator, uint32 operatorSetId) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) OperatorSetStatus(avs common.Address, operator common.Address, operatorSetId uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + return _ContractIAVSDirectory.Contract.OperatorSetStatus(&_ContractIAVSDirectory.CallOpts, avs, operator, operatorSetId) +} + +// OperatorSetsMemberOfAtIndex is a free data retrieval call binding the contract method 0xb5a768ca. +// +// Solidity: function operatorSetsMemberOfAtIndex(address operator, uint256 index) view returns((address,uint32)) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCaller) OperatorSetsMemberOfAtIndex(opts *bind.CallOpts, operator common.Address, index *big.Int) (OperatorSet, error) { + var out []interface{} + err := _ContractIAVSDirectory.contract.Call(opts, &out, "operatorSetsMemberOfAtIndex", operator, index) + + if err != nil { + return *new(OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + + return out0, err + +} + +// OperatorSetsMemberOfAtIndex is a free data retrieval call binding the contract method 0xb5a768ca. +// +// Solidity: function operatorSetsMemberOfAtIndex(address operator, uint256 index) view returns((address,uint32)) +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) OperatorSetsMemberOfAtIndex(operator common.Address, index *big.Int) (OperatorSet, error) { + return _ContractIAVSDirectory.Contract.OperatorSetsMemberOfAtIndex(&_ContractIAVSDirectory.CallOpts, operator, index) +} + +// OperatorSetsMemberOfAtIndex is a free data retrieval call binding the contract method 0xb5a768ca. +// +// Solidity: function operatorSetsMemberOfAtIndex(address operator, uint256 index) view returns((address,uint32)) +func (_ContractIAVSDirectory *ContractIAVSDirectoryCallerSession) OperatorSetsMemberOfAtIndex(operator common.Address, index *big.Int) (OperatorSet, error) { + return _ContractIAVSDirectory.Contract.OperatorSetsMemberOfAtIndex(&_ContractIAVSDirectory.CallOpts, operator, index) +} + +// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x76999342. +// +// Solidity: function addStrategiesToOperatorSet(uint32 operatorSetId, address[] strategies) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactor) AddStrategiesToOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractIAVSDirectory.contract.Transact(opts, "addStrategiesToOperatorSet", operatorSetId, strategies) +} + +// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x76999342. +// +// Solidity: function addStrategiesToOperatorSet(uint32 operatorSetId, address[] strategies) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) AddStrategiesToOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractIAVSDirectory.Contract.AddStrategiesToOperatorSet(&_ContractIAVSDirectory.TransactOpts, operatorSetId, strategies) +} + +// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x76999342. +// +// Solidity: function addStrategiesToOperatorSet(uint32 operatorSetId, address[] strategies) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactorSession) AddStrategiesToOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractIAVSDirectory.Contract.AddStrategiesToOperatorSet(&_ContractIAVSDirectory.TransactOpts, operatorSetId, strategies) +} + // BecomeOperatorSetAVS is a paid mutator transaction binding the contract method 0xaec205c5. // // Solidity: function becomeOperatorSetAVS() returns() @@ -725,6 +1107,27 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactorSession) ForceDereg return _ContractIAVSDirectory.Contract.ForceDeregisterFromOperatorSets(&_ContractIAVSDirectory.TransactOpts, operator, avs, operatorSetIds, operatorSignature) } +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractIAVSDirectory.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractIAVSDirectory.Contract.Initialize(&_ContractIAVSDirectory.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractIAVSDirectory.Contract.Initialize(&_ContractIAVSDirectory.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus) +} + // MigrateOperatorsToOperatorSets is a paid mutator transaction binding the contract method 0xef2dfa8d. // // Solidity: function migrateOperatorsToOperatorSets(address[] operators, uint32[][] operatorSetIds) returns() @@ -788,6 +1191,27 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactorSession) RegisterOp return _ContractIAVSDirectory.Contract.RegisterOperatorToOperatorSets(&_ContractIAVSDirectory.TransactOpts, operator, operatorSetIds, operatorSignature) } +// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xce7b5e4b. +// +// Solidity: function removeStrategiesFromOperatorSet(uint32 operatorSetId, address[] strategies) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactor) RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractIAVSDirectory.contract.Transact(opts, "removeStrategiesFromOperatorSet", operatorSetId, strategies) +} + +// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xce7b5e4b. +// +// Solidity: function removeStrategiesFromOperatorSet(uint32 operatorSetId, address[] strategies) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectorySession) RemoveStrategiesFromOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractIAVSDirectory.Contract.RemoveStrategiesFromOperatorSet(&_ContractIAVSDirectory.TransactOpts, operatorSetId, strategies) +} + +// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xce7b5e4b. +// +// Solidity: function removeStrategiesFromOperatorSet(uint32 operatorSetId, address[] strategies) returns() +func (_ContractIAVSDirectory *ContractIAVSDirectoryTransactorSession) RemoveStrategiesFromOperatorSet(operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) { + return _ContractIAVSDirectory.Contract.RemoveStrategiesFromOperatorSet(&_ContractIAVSDirectory.TransactOpts, operatorSetId, strategies) +} + // UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. // // Solidity: function updateAVSMetadataURI(string metadataURI) returns() @@ -1322,7 +1746,7 @@ func (it *ContractIAVSDirectoryOperatorAddedToOperatorSetIterator) Close() error // ContractIAVSDirectoryOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the ContractIAVSDirectory contract. type ContractIAVSDirectoryOperatorAddedToOperatorSet struct { Operator common.Address - OperatorSet IAVSDirectoryOperatorSet + OperatorSet OperatorSet Raw types.Log // Blockchain specific contextual infos } @@ -1621,7 +2045,7 @@ func (it *ContractIAVSDirectoryOperatorRemovedFromOperatorSetIterator) Close() e // ContractIAVSDirectoryOperatorRemovedFromOperatorSet represents a OperatorRemovedFromOperatorSet event raised by the ContractIAVSDirectory contract. type ContractIAVSDirectoryOperatorRemovedFromOperatorSet struct { Operator common.Address - OperatorSet IAVSDirectoryOperatorSet + OperatorSet OperatorSet Raw types.Log // Blockchain specific contextual infos } @@ -1765,7 +2189,7 @@ func (it *ContractIAVSDirectoryOperatorSetCreatedIterator) Close() error { // ContractIAVSDirectoryOperatorSetCreated represents a OperatorSetCreated event raised by the ContractIAVSDirectory contract. type ContractIAVSDirectoryOperatorSetCreated struct { - OperatorSet IAVSDirectoryOperatorSet + OperatorSet OperatorSet Raw types.Log // Blockchain specific contextual infos } @@ -1829,3 +2253,273 @@ func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) ParseOperatorSetCre event.Raw = log return event, nil } + +// ContractIAVSDirectoryStrategyAddedToOperatorSetIterator is returned from FilterStrategyAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyAddedToOperatorSet events raised by the ContractIAVSDirectory contract. +type ContractIAVSDirectoryStrategyAddedToOperatorSetIterator struct { + Event *ContractIAVSDirectoryStrategyAddedToOperatorSet // 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 *ContractIAVSDirectoryStrategyAddedToOperatorSetIterator) 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(ContractIAVSDirectoryStrategyAddedToOperatorSet) + 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(ContractIAVSDirectoryStrategyAddedToOperatorSet) + 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 *ContractIAVSDirectoryStrategyAddedToOperatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAVSDirectoryStrategyAddedToOperatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAVSDirectoryStrategyAddedToOperatorSet represents a StrategyAddedToOperatorSet event raised by the ContractIAVSDirectory contract. +type ContractIAVSDirectoryStrategyAddedToOperatorSet struct { + OperatorSet OperatorSet + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyAddedToOperatorSet is a free log retrieval operation binding the contract event 0x7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b. +// +// Solidity: event StrategyAddedToOperatorSet((address,uint32) operatorSet, address strategy) +func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) FilterStrategyAddedToOperatorSet(opts *bind.FilterOpts) (*ContractIAVSDirectoryStrategyAddedToOperatorSetIterator, error) { + + logs, sub, err := _ContractIAVSDirectory.contract.FilterLogs(opts, "StrategyAddedToOperatorSet") + if err != nil { + return nil, err + } + return &ContractIAVSDirectoryStrategyAddedToOperatorSetIterator{contract: _ContractIAVSDirectory.contract, event: "StrategyAddedToOperatorSet", logs: logs, sub: sub}, nil +} + +// WatchStrategyAddedToOperatorSet is a free log subscription operation binding the contract event 0x7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b. +// +// Solidity: event StrategyAddedToOperatorSet((address,uint32) operatorSet, address strategy) +func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) WatchStrategyAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *ContractIAVSDirectoryStrategyAddedToOperatorSet) (event.Subscription, error) { + + logs, sub, err := _ContractIAVSDirectory.contract.WatchLogs(opts, "StrategyAddedToOperatorSet") + 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(ContractIAVSDirectoryStrategyAddedToOperatorSet) + if err := _ContractIAVSDirectory.contract.UnpackLog(event, "StrategyAddedToOperatorSet", 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 +} + +// ParseStrategyAddedToOperatorSet is a log parse operation binding the contract event 0x7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b. +// +// Solidity: event StrategyAddedToOperatorSet((address,uint32) operatorSet, address strategy) +func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) ParseStrategyAddedToOperatorSet(log types.Log) (*ContractIAVSDirectoryStrategyAddedToOperatorSet, error) { + event := new(ContractIAVSDirectoryStrategyAddedToOperatorSet) + if err := _ContractIAVSDirectory.contract.UnpackLog(event, "StrategyAddedToOperatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator is returned from FilterStrategyRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromOperatorSet events raised by the ContractIAVSDirectory contract. +type ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator struct { + Event *ContractIAVSDirectoryStrategyRemovedFromOperatorSet // 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 *ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator) 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(ContractIAVSDirectoryStrategyRemovedFromOperatorSet) + 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(ContractIAVSDirectoryStrategyRemovedFromOperatorSet) + 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 *ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAVSDirectoryStrategyRemovedFromOperatorSet represents a StrategyRemovedFromOperatorSet event raised by the ContractIAVSDirectory contract. +type ContractIAVSDirectoryStrategyRemovedFromOperatorSet struct { + OperatorSet OperatorSet + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyRemovedFromOperatorSet is a free log retrieval operation binding the contract event 0x7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee. +// +// Solidity: event StrategyRemovedFromOperatorSet((address,uint32) operatorSet, address strategy) +func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) FilterStrategyRemovedFromOperatorSet(opts *bind.FilterOpts) (*ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator, error) { + + logs, sub, err := _ContractIAVSDirectory.contract.FilterLogs(opts, "StrategyRemovedFromOperatorSet") + if err != nil { + return nil, err + } + return &ContractIAVSDirectoryStrategyRemovedFromOperatorSetIterator{contract: _ContractIAVSDirectory.contract, event: "StrategyRemovedFromOperatorSet", logs: logs, sub: sub}, nil +} + +// WatchStrategyRemovedFromOperatorSet is a free log subscription operation binding the contract event 0x7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee. +// +// Solidity: event StrategyRemovedFromOperatorSet((address,uint32) operatorSet, address strategy) +func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) WatchStrategyRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *ContractIAVSDirectoryStrategyRemovedFromOperatorSet) (event.Subscription, error) { + + logs, sub, err := _ContractIAVSDirectory.contract.WatchLogs(opts, "StrategyRemovedFromOperatorSet") + 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(ContractIAVSDirectoryStrategyRemovedFromOperatorSet) + if err := _ContractIAVSDirectory.contract.UnpackLog(event, "StrategyRemovedFromOperatorSet", 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 +} + +// ParseStrategyRemovedFromOperatorSet is a log parse operation binding the contract event 0x7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee. +// +// Solidity: event StrategyRemovedFromOperatorSet((address,uint32) operatorSet, address strategy) +func (_ContractIAVSDirectory *ContractIAVSDirectoryFilterer) ParseStrategyRemovedFromOperatorSet(log types.Log) (*ContractIAVSDirectoryStrategyRemovedFromOperatorSet, error) { + event := new(ContractIAVSDirectoryStrategyRemovedFromOperatorSet) + if err := _ContractIAVSDirectory.contract.UnpackLog(event, "StrategyRemovedFromOperatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/IAllocationManager/binding.go b/contracts/bindings/IAllocationManager/binding.go new file mode 100644 index 00000000..26e80782 --- /dev/null +++ b/contracts/bindings/IAllocationManager/binding.go @@ -0,0 +1,1364 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contractIAllocationManager + +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 +) + +// IAllocationManagerTypesMagnitudeAllocation is an auto generated low-level Go binding around an user-defined struct. +type IAllocationManagerTypesMagnitudeAllocation struct { + Strategy common.Address + ExpectedMaxMagnitude uint64 + OperatorSets []OperatorSet + Magnitudes []uint64 +} + +// IAllocationManagerTypesMagnitudeInfo is an auto generated low-level Go binding around an user-defined struct. +type IAllocationManagerTypesMagnitudeInfo struct { + CurrentMagnitude uint64 + PendingDiff *big.Int + EffectTimestamp uint32 +} + +// IAllocationManagerTypesSlashingParams is an auto generated low-level Go binding around an user-defined struct. +type IAllocationManagerTypesSlashingParams struct { + Operator common.Address + OperatorSetId uint32 + Strategies []common.Address + WadToSlash *big.Int + Description string +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + OperatorSetId uint32 +} + +// ContractIAllocationManagerMetaData contains all meta data concerning the ContractIAllocationManager contract. +var ContractIAllocationManagerMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToComplete\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isSet\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationInfo\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structIAllocationManagerTypes.MagnitudeInfo[][]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationInfo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.MagnitudeInfo[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationInfo\",\"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\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.MagnitudeInfo[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"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\":\"getMaxMagnitudesAtTimestamp\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"timestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinDelegatedAndSlashableOperatorShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"beforeTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"},{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"allocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.MagnitudeAllocation[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"expectedMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"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\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadToSlash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectTimestamp\",\"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\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"totalMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetMagnitudeUpdated\",\"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\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"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\":\"operatorSetId\",\"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\":\"error\",\"name\":\"AlreadySlashedForTimestamp\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientAllocatableMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAllocationDelay\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidExpectedTotalMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTimestamp\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotAllocated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", +} + +// ContractIAllocationManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractIAllocationManagerMetaData.ABI instead. +var ContractIAllocationManagerABI = ContractIAllocationManagerMetaData.ABI + +// ContractIAllocationManagerMethods is an auto generated interface around an Ethereum contract. +type ContractIAllocationManagerMethods interface { + ContractIAllocationManagerCalls + ContractIAllocationManagerTransacts + ContractIAllocationManagerFilters +} + +// ContractIAllocationManagerCalls is an auto generated interface that defines the call methods available for an Ethereum contract. +type ContractIAllocationManagerCalls interface { + GetAllocatableMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) + + GetAllocationDelay(opts *bind.CallOpts, operator common.Address) (struct { + IsSet bool + Delay uint32 + }, error) + + GetAllocationInfo(opts *bind.CallOpts, operatorSet OperatorSet, strategies []common.Address, operators []common.Address) ([][]IAllocationManagerTypesMagnitudeInfo, error) + + GetAllocationInfo0(opts *bind.CallOpts, operator common.Address, strategy common.Address, operatorSets []OperatorSet) ([]IAllocationManagerTypesMagnitudeInfo, error) + + GetAllocationInfo1(opts *bind.CallOpts, operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesMagnitudeInfo, error) + + GetMaxMagnitudes(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]uint64, error) + + GetMaxMagnitudesAtTimestamp(opts *bind.CallOpts, operator common.Address, strategies []common.Address, timestamp uint32) ([]uint64, error) + + GetMinDelegatedAndSlashableOperatorShares(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address, beforeTimestamp uint32) ([][]*big.Int, [][]*big.Int, error) +} + +// ContractIAllocationManagerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. +type ContractIAllocationManagerTransacts interface { + ClearDeallocationQueue(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, numToComplete []uint16) (*types.Transaction, error) + + Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) + + ModifyAllocations(opts *bind.TransactOpts, allocations []IAllocationManagerTypesMagnitudeAllocation) (*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) +} + +// ContractIAllocationManagerFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. +type ContractIAllocationManagerFilters interface { + FilterAllocationDelaySet(opts *bind.FilterOpts) (*ContractIAllocationManagerAllocationDelaySetIterator, error) + WatchAllocationDelaySet(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerAllocationDelaySet) (event.Subscription, error) + ParseAllocationDelaySet(log types.Log) (*ContractIAllocationManagerAllocationDelaySet, error) + + FilterEncumberedMagnitudeUpdated(opts *bind.FilterOpts) (*ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator, error) + WatchEncumberedMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerEncumberedMagnitudeUpdated) (event.Subscription, error) + ParseEncumberedMagnitudeUpdated(log types.Log) (*ContractIAllocationManagerEncumberedMagnitudeUpdated, error) + + FilterMaxMagnitudeUpdated(opts *bind.FilterOpts) (*ContractIAllocationManagerMaxMagnitudeUpdatedIterator, error) + WatchMaxMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerMaxMagnitudeUpdated) (event.Subscription, error) + ParseMaxMagnitudeUpdated(log types.Log) (*ContractIAllocationManagerMaxMagnitudeUpdated, error) + + FilterOperatorSetMagnitudeUpdated(opts *bind.FilterOpts) (*ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator, error) + WatchOperatorSetMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerOperatorSetMagnitudeUpdated) (event.Subscription, error) + ParseOperatorSetMagnitudeUpdated(log types.Log) (*ContractIAllocationManagerOperatorSetMagnitudeUpdated, error) + + FilterOperatorSlashed(opts *bind.FilterOpts) (*ContractIAllocationManagerOperatorSlashedIterator, error) + WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerOperatorSlashed) (event.Subscription, error) + ParseOperatorSlashed(log types.Log) (*ContractIAllocationManagerOperatorSlashed, error) +} + +// ContractIAllocationManager is an auto generated Go binding around an Ethereum contract. +type ContractIAllocationManager struct { + ContractIAllocationManagerCaller // Read-only binding to the contract + ContractIAllocationManagerTransactor // Write-only binding to the contract + ContractIAllocationManagerFilterer // Log filterer for contract events +} + +// ContractIAllocationManager implements the ContractIAllocationManagerMethods interface. +var _ ContractIAllocationManagerMethods = (*ContractIAllocationManager)(nil) + +// ContractIAllocationManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractIAllocationManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractIAllocationManagerCaller implements the ContractIAllocationManagerCalls interface. +var _ ContractIAllocationManagerCalls = (*ContractIAllocationManagerCaller)(nil) + +// ContractIAllocationManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractIAllocationManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractIAllocationManagerTransactor implements the ContractIAllocationManagerTransacts interface. +var _ ContractIAllocationManagerTransacts = (*ContractIAllocationManagerTransactor)(nil) + +// ContractIAllocationManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractIAllocationManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractIAllocationManagerFilterer implements the ContractIAllocationManagerFilters interface. +var _ ContractIAllocationManagerFilters = (*ContractIAllocationManagerFilterer)(nil) + +// ContractIAllocationManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractIAllocationManagerSession struct { + Contract *ContractIAllocationManager // 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 +} + +// ContractIAllocationManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractIAllocationManagerCallerSession struct { + Contract *ContractIAllocationManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractIAllocationManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractIAllocationManagerTransactorSession struct { + Contract *ContractIAllocationManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractIAllocationManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractIAllocationManagerRaw struct { + Contract *ContractIAllocationManager // Generic contract binding to access the raw methods on +} + +// ContractIAllocationManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractIAllocationManagerCallerRaw struct { + Contract *ContractIAllocationManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractIAllocationManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractIAllocationManagerTransactorRaw struct { + Contract *ContractIAllocationManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractIAllocationManager creates a new instance of ContractIAllocationManager, bound to a specific deployed contract. +func NewContractIAllocationManager(address common.Address, backend bind.ContractBackend) (*ContractIAllocationManager, error) { + contract, err := bindContractIAllocationManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractIAllocationManager{ContractIAllocationManagerCaller: ContractIAllocationManagerCaller{contract: contract}, ContractIAllocationManagerTransactor: ContractIAllocationManagerTransactor{contract: contract}, ContractIAllocationManagerFilterer: ContractIAllocationManagerFilterer{contract: contract}}, nil +} + +// NewContractIAllocationManagerCaller creates a new read-only instance of ContractIAllocationManager, bound to a specific deployed contract. +func NewContractIAllocationManagerCaller(address common.Address, caller bind.ContractCaller) (*ContractIAllocationManagerCaller, error) { + contract, err := bindContractIAllocationManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractIAllocationManagerCaller{contract: contract}, nil +} + +// NewContractIAllocationManagerTransactor creates a new write-only instance of ContractIAllocationManager, bound to a specific deployed contract. +func NewContractIAllocationManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractIAllocationManagerTransactor, error) { + contract, err := bindContractIAllocationManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractIAllocationManagerTransactor{contract: contract}, nil +} + +// NewContractIAllocationManagerFilterer creates a new log filterer instance of ContractIAllocationManager, bound to a specific deployed contract. +func NewContractIAllocationManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractIAllocationManagerFilterer, error) { + contract, err := bindContractIAllocationManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractIAllocationManagerFilterer{contract: contract}, nil +} + +// bindContractIAllocationManager binds a generic wrapper to an already deployed contract. +func bindContractIAllocationManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractIAllocationManagerMetaData.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 (_ContractIAllocationManager *ContractIAllocationManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractIAllocationManager.Contract.ContractIAllocationManagerCaller.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 (_ContractIAllocationManager *ContractIAllocationManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.ContractIAllocationManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractIAllocationManager *ContractIAllocationManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.ContractIAllocationManagerTransactor.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 (_ContractIAllocationManager *ContractIAllocationManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractIAllocationManager.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 (_ContractIAllocationManager *ContractIAllocationManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.contract.Transact(opts, method, params...) +} + +// GetAllocatableMagnitude is a free data retrieval call binding the contract method 0x6cfb4481. +// +// Solidity: function getAllocatableMagnitude(address operator, address strategy) view returns(uint64) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetAllocatableMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getAllocatableMagnitude", operator, strategy) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetAllocatableMagnitude is a free data retrieval call binding the contract method 0x6cfb4481. +// +// Solidity: function getAllocatableMagnitude(address operator, address strategy) view returns(uint64) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) { + return _ContractIAllocationManager.Contract.GetAllocatableMagnitude(&_ContractIAllocationManager.CallOpts, operator, strategy) +} + +// GetAllocatableMagnitude is a free data retrieval call binding the contract method 0x6cfb4481. +// +// Solidity: function getAllocatableMagnitude(address operator, address strategy) view returns(uint64) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) { + return _ContractIAllocationManager.Contract.GetAllocatableMagnitude(&_ContractIAllocationManager.CallOpts, operator, strategy) +} + +// GetAllocationDelay is a free data retrieval call binding the contract method 0xb9fbaed1. +// +// Solidity: function getAllocationDelay(address operator) view returns(bool isSet, uint32 delay) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetAllocationDelay(opts *bind.CallOpts, operator common.Address) (struct { + IsSet bool + Delay uint32 +}, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getAllocationDelay", operator) + + outstruct := new(struct { + IsSet bool + Delay uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.IsSet = *abi.ConvertType(out[0], new(bool)).(*bool) + outstruct.Delay = *abi.ConvertType(out[1], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// GetAllocationDelay is a free data retrieval call binding the contract method 0xb9fbaed1. +// +// Solidity: function getAllocationDelay(address operator) view returns(bool isSet, uint32 delay) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetAllocationDelay(operator common.Address) (struct { + IsSet bool + Delay uint32 +}, error) { + return _ContractIAllocationManager.Contract.GetAllocationDelay(&_ContractIAllocationManager.CallOpts, operator) +} + +// GetAllocationDelay is a free data retrieval call binding the contract method 0xb9fbaed1. +// +// Solidity: function getAllocationDelay(address operator) view returns(bool isSet, uint32 delay) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetAllocationDelay(operator common.Address) (struct { + IsSet bool + Delay uint32 +}, error) { + return _ContractIAllocationManager.Contract.GetAllocationDelay(&_ContractIAllocationManager.CallOpts, operator) +} + +// GetAllocationInfo is a free data retrieval call binding the contract method 0x0b002119. +// +// Solidity: function getAllocationInfo((address,uint32) operatorSet, address[] strategies, address[] operators) view returns((uint64,int128,uint32)[][]) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetAllocationInfo(opts *bind.CallOpts, operatorSet OperatorSet, strategies []common.Address, operators []common.Address) ([][]IAllocationManagerTypesMagnitudeInfo, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getAllocationInfo", operatorSet, strategies, operators) + + if err != nil { + return *new([][]IAllocationManagerTypesMagnitudeInfo), err + } + + out0 := *abi.ConvertType(out[0], new([][]IAllocationManagerTypesMagnitudeInfo)).(*[][]IAllocationManagerTypesMagnitudeInfo) + + return out0, err + +} + +// GetAllocationInfo is a free data retrieval call binding the contract method 0x0b002119. +// +// Solidity: function getAllocationInfo((address,uint32) operatorSet, address[] strategies, address[] operators) view returns((uint64,int128,uint32)[][]) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetAllocationInfo(operatorSet OperatorSet, strategies []common.Address, operators []common.Address) ([][]IAllocationManagerTypesMagnitudeInfo, error) { + return _ContractIAllocationManager.Contract.GetAllocationInfo(&_ContractIAllocationManager.CallOpts, operatorSet, strategies, operators) +} + +// GetAllocationInfo is a free data retrieval call binding the contract method 0x0b002119. +// +// Solidity: function getAllocationInfo((address,uint32) operatorSet, address[] strategies, address[] operators) view returns((uint64,int128,uint32)[][]) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetAllocationInfo(operatorSet OperatorSet, strategies []common.Address, operators []common.Address) ([][]IAllocationManagerTypesMagnitudeInfo, error) { + return _ContractIAllocationManager.Contract.GetAllocationInfo(&_ContractIAllocationManager.CallOpts, operatorSet, strategies, operators) +} + +// GetAllocationInfo0 is a free data retrieval call binding the contract method 0x35af054a. +// +// Solidity: function getAllocationInfo(address operator, address strategy, (address,uint32)[] operatorSets) view returns((uint64,int128,uint32)[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetAllocationInfo0(opts *bind.CallOpts, operator common.Address, strategy common.Address, operatorSets []OperatorSet) ([]IAllocationManagerTypesMagnitudeInfo, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getAllocationInfo0", operator, strategy, operatorSets) + + if err != nil { + return *new([]IAllocationManagerTypesMagnitudeInfo), err + } + + out0 := *abi.ConvertType(out[0], new([]IAllocationManagerTypesMagnitudeInfo)).(*[]IAllocationManagerTypesMagnitudeInfo) + + return out0, err + +} + +// GetAllocationInfo0 is a free data retrieval call binding the contract method 0x35af054a. +// +// Solidity: function getAllocationInfo(address operator, address strategy, (address,uint32)[] operatorSets) view returns((uint64,int128,uint32)[]) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetAllocationInfo0(operator common.Address, strategy common.Address, operatorSets []OperatorSet) ([]IAllocationManagerTypesMagnitudeInfo, error) { + return _ContractIAllocationManager.Contract.GetAllocationInfo0(&_ContractIAllocationManager.CallOpts, operator, strategy, operatorSets) +} + +// GetAllocationInfo0 is a free data retrieval call binding the contract method 0x35af054a. +// +// Solidity: function getAllocationInfo(address operator, address strategy, (address,uint32)[] operatorSets) view returns((uint64,int128,uint32)[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetAllocationInfo0(operator common.Address, strategy common.Address, operatorSets []OperatorSet) ([]IAllocationManagerTypesMagnitudeInfo, error) { + return _ContractIAllocationManager.Contract.GetAllocationInfo0(&_ContractIAllocationManager.CallOpts, operator, strategy, operatorSets) +} + +// GetAllocationInfo1 is a free data retrieval call binding the contract method 0x4d9dbde9. +// +// Solidity: function getAllocationInfo(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetAllocationInfo1(opts *bind.CallOpts, operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesMagnitudeInfo, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getAllocationInfo1", operator, strategy) + + if err != nil { + return *new([]OperatorSet), *new([]IAllocationManagerTypesMagnitudeInfo), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + out1 := *abi.ConvertType(out[1], new([]IAllocationManagerTypesMagnitudeInfo)).(*[]IAllocationManagerTypesMagnitudeInfo) + + return out0, out1, err + +} + +// GetAllocationInfo1 is a free data retrieval call binding the contract method 0x4d9dbde9. +// +// Solidity: function getAllocationInfo(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[]) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetAllocationInfo1(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesMagnitudeInfo, error) { + return _ContractIAllocationManager.Contract.GetAllocationInfo1(&_ContractIAllocationManager.CallOpts, operator, strategy) +} + +// GetAllocationInfo1 is a free data retrieval call binding the contract method 0x4d9dbde9. +// +// Solidity: function getAllocationInfo(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetAllocationInfo1(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesMagnitudeInfo, error) { + return _ContractIAllocationManager.Contract.GetAllocationInfo1(&_ContractIAllocationManager.CallOpts, operator, strategy) +} + +// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x547afb87. +// +// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetMaxMagnitudes(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]uint64, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getMaxMagnitudes", operator, strategies) + + if err != nil { + return *new([]uint64), err + } + + out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64) + + return out0, err + +} + +// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x547afb87. +// +// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[]) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetMaxMagnitudes(operator common.Address, strategies []common.Address) ([]uint64, error) { + return _ContractIAllocationManager.Contract.GetMaxMagnitudes(&_ContractIAllocationManager.CallOpts, operator, strategies) +} + +// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x547afb87. +// +// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetMaxMagnitudes(operator common.Address, strategies []common.Address) ([]uint64, error) { + return _ContractIAllocationManager.Contract.GetMaxMagnitudes(&_ContractIAllocationManager.CallOpts, operator, strategies) +} + +// GetMaxMagnitudesAtTimestamp is a free data retrieval call binding the contract method 0x843b349f. +// +// Solidity: function getMaxMagnitudesAtTimestamp(address operator, address[] strategies, uint32 timestamp) view returns(uint64[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetMaxMagnitudesAtTimestamp(opts *bind.CallOpts, operator common.Address, strategies []common.Address, timestamp uint32) ([]uint64, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getMaxMagnitudesAtTimestamp", operator, strategies, timestamp) + + if err != nil { + return *new([]uint64), err + } + + out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64) + + return out0, err + +} + +// GetMaxMagnitudesAtTimestamp is a free data retrieval call binding the contract method 0x843b349f. +// +// Solidity: function getMaxMagnitudesAtTimestamp(address operator, address[] strategies, uint32 timestamp) view returns(uint64[]) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetMaxMagnitudesAtTimestamp(operator common.Address, strategies []common.Address, timestamp uint32) ([]uint64, error) { + return _ContractIAllocationManager.Contract.GetMaxMagnitudesAtTimestamp(&_ContractIAllocationManager.CallOpts, operator, strategies, timestamp) +} + +// GetMaxMagnitudesAtTimestamp is a free data retrieval call binding the contract method 0x843b349f. +// +// Solidity: function getMaxMagnitudesAtTimestamp(address operator, address[] strategies, uint32 timestamp) view returns(uint64[]) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetMaxMagnitudesAtTimestamp(operator common.Address, strategies []common.Address, timestamp uint32) ([]uint64, error) { + return _ContractIAllocationManager.Contract.GetMaxMagnitudesAtTimestamp(&_ContractIAllocationManager.CallOpts, operator, strategies, timestamp) +} + +// GetMinDelegatedAndSlashableOperatorShares is a free data retrieval call binding the contract method 0xe07d2b12. +// +// Solidity: function getMinDelegatedAndSlashableOperatorShares((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 beforeTimestamp) view returns(uint256[][], uint256[][]) +func (_ContractIAllocationManager *ContractIAllocationManagerCaller) GetMinDelegatedAndSlashableOperatorShares(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address, beforeTimestamp uint32) ([][]*big.Int, [][]*big.Int, error) { + var out []interface{} + err := _ContractIAllocationManager.contract.Call(opts, &out, "getMinDelegatedAndSlashableOperatorShares", operatorSet, operators, strategies, beforeTimestamp) + + if err != nil { + return *new([][]*big.Int), *new([][]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int) + out1 := *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return out0, out1, err + +} + +// GetMinDelegatedAndSlashableOperatorShares is a free data retrieval call binding the contract method 0xe07d2b12. +// +// Solidity: function getMinDelegatedAndSlashableOperatorShares((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 beforeTimestamp) view returns(uint256[][], uint256[][]) +func (_ContractIAllocationManager *ContractIAllocationManagerSession) GetMinDelegatedAndSlashableOperatorShares(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, beforeTimestamp uint32) ([][]*big.Int, [][]*big.Int, error) { + return _ContractIAllocationManager.Contract.GetMinDelegatedAndSlashableOperatorShares(&_ContractIAllocationManager.CallOpts, operatorSet, operators, strategies, beforeTimestamp) +} + +// GetMinDelegatedAndSlashableOperatorShares is a free data retrieval call binding the contract method 0xe07d2b12. +// +// Solidity: function getMinDelegatedAndSlashableOperatorShares((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 beforeTimestamp) view returns(uint256[][], uint256[][]) +func (_ContractIAllocationManager *ContractIAllocationManagerCallerSession) GetMinDelegatedAndSlashableOperatorShares(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, beforeTimestamp uint32) ([][]*big.Int, [][]*big.Int, error) { + return _ContractIAllocationManager.Contract.GetMinDelegatedAndSlashableOperatorShares(&_ContractIAllocationManager.CallOpts, operatorSet, operators, strategies, beforeTimestamp) +} + +// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef. +// +// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToComplete) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactor) ClearDeallocationQueue(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, numToComplete []uint16) (*types.Transaction, error) { + return _ContractIAllocationManager.contract.Transact(opts, "clearDeallocationQueue", operator, strategies, numToComplete) +} + +// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef. +// +// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToComplete) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToComplete []uint16) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.ClearDeallocationQueue(&_ContractIAllocationManager.TransactOpts, operator, strategies, numToComplete) +} + +// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef. +// +// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToComplete) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToComplete []uint16) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.ClearDeallocationQueue(&_ContractIAllocationManager.TransactOpts, operator, strategies, numToComplete) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractIAllocationManager.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.Initialize(&_ContractIAllocationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.Initialize(&_ContractIAllocationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus) +} + +// ModifyAllocations is a paid mutator transaction binding the contract method 0x1637b60f. +// +// Solidity: function modifyAllocations((address,uint64,(address,uint32)[],uint64[])[] allocations) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactor) ModifyAllocations(opts *bind.TransactOpts, allocations []IAllocationManagerTypesMagnitudeAllocation) (*types.Transaction, error) { + return _ContractIAllocationManager.contract.Transact(opts, "modifyAllocations", allocations) +} + +// ModifyAllocations is a paid mutator transaction binding the contract method 0x1637b60f. +// +// Solidity: function modifyAllocations((address,uint64,(address,uint32)[],uint64[])[] allocations) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerSession) ModifyAllocations(allocations []IAllocationManagerTypesMagnitudeAllocation) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.ModifyAllocations(&_ContractIAllocationManager.TransactOpts, allocations) +} + +// ModifyAllocations is a paid mutator transaction binding the contract method 0x1637b60f. +// +// Solidity: function modifyAllocations((address,uint64,(address,uint32)[],uint64[])[] allocations) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorSession) ModifyAllocations(allocations []IAllocationManagerTypesMagnitudeAllocation) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.ModifyAllocations(&_ContractIAllocationManager.TransactOpts, allocations) +} + +// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6. +// +// Solidity: function setAllocationDelay(address operator, uint32 delay) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactor) SetAllocationDelay(opts *bind.TransactOpts, operator common.Address, delay uint32) (*types.Transaction, error) { + return _ContractIAllocationManager.contract.Transact(opts, "setAllocationDelay", operator, delay) +} + +// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6. +// +// Solidity: function setAllocationDelay(address operator, uint32 delay) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.SetAllocationDelay(&_ContractIAllocationManager.TransactOpts, operator, delay) +} + +// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6. +// +// Solidity: function setAllocationDelay(address operator, uint32 delay) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.SetAllocationDelay(&_ContractIAllocationManager.TransactOpts, operator, delay) +} + +// SetAllocationDelay0 is a paid mutator transaction binding the contract method 0x5c489bb5. +// +// Solidity: function setAllocationDelay(uint32 delay) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactor) SetAllocationDelay0(opts *bind.TransactOpts, delay uint32) (*types.Transaction, error) { + return _ContractIAllocationManager.contract.Transact(opts, "setAllocationDelay0", delay) +} + +// SetAllocationDelay0 is a paid mutator transaction binding the contract method 0x5c489bb5. +// +// Solidity: function setAllocationDelay(uint32 delay) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerSession) SetAllocationDelay0(delay uint32) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.SetAllocationDelay0(&_ContractIAllocationManager.TransactOpts, delay) +} + +// SetAllocationDelay0 is a paid mutator transaction binding the contract method 0x5c489bb5. +// +// Solidity: function setAllocationDelay(uint32 delay) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorSession) SetAllocationDelay0(delay uint32) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.SetAllocationDelay0(&_ContractIAllocationManager.TransactOpts, delay) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0x60db99a3. +// +// Solidity: function slashOperator((address,uint32,address[],uint256,string) params) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactor) SlashOperator(opts *bind.TransactOpts, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { + return _ContractIAllocationManager.contract.Transact(opts, "slashOperator", params) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0x60db99a3. +// +// Solidity: function slashOperator((address,uint32,address[],uint256,string) params) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerSession) SlashOperator(params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.SlashOperator(&_ContractIAllocationManager.TransactOpts, params) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0x60db99a3. +// +// Solidity: function slashOperator((address,uint32,address[],uint256,string) params) returns() +func (_ContractIAllocationManager *ContractIAllocationManagerTransactorSession) SlashOperator(params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) { + return _ContractIAllocationManager.Contract.SlashOperator(&_ContractIAllocationManager.TransactOpts, params) +} + +// ContractIAllocationManagerAllocationDelaySetIterator is returned from FilterAllocationDelaySet and is used to iterate over the raw logs and unpacked data for AllocationDelaySet events raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerAllocationDelaySetIterator struct { + Event *ContractIAllocationManagerAllocationDelaySet // 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 *ContractIAllocationManagerAllocationDelaySetIterator) 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(ContractIAllocationManagerAllocationDelaySet) + 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(ContractIAllocationManagerAllocationDelaySet) + 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 *ContractIAllocationManagerAllocationDelaySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAllocationManagerAllocationDelaySetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAllocationManagerAllocationDelaySet represents a AllocationDelaySet event raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerAllocationDelaySet struct { + Operator common.Address + Delay uint32 + EffectTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAllocationDelaySet is a free log retrieval operation binding the contract event 0x4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db. +// +// Solidity: event AllocationDelaySet(address operator, uint32 delay, uint32 effectTimestamp) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) FilterAllocationDelaySet(opts *bind.FilterOpts) (*ContractIAllocationManagerAllocationDelaySetIterator, error) { + + logs, sub, err := _ContractIAllocationManager.contract.FilterLogs(opts, "AllocationDelaySet") + if err != nil { + return nil, err + } + return &ContractIAllocationManagerAllocationDelaySetIterator{contract: _ContractIAllocationManager.contract, event: "AllocationDelaySet", logs: logs, sub: sub}, nil +} + +// WatchAllocationDelaySet is a free log subscription operation binding the contract event 0x4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db. +// +// Solidity: event AllocationDelaySet(address operator, uint32 delay, uint32 effectTimestamp) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) WatchAllocationDelaySet(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerAllocationDelaySet) (event.Subscription, error) { + + logs, sub, err := _ContractIAllocationManager.contract.WatchLogs(opts, "AllocationDelaySet") + 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(ContractIAllocationManagerAllocationDelaySet) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "AllocationDelaySet", 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 +} + +// ParseAllocationDelaySet is a log parse operation binding the contract event 0x4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db. +// +// Solidity: event AllocationDelaySet(address operator, uint32 delay, uint32 effectTimestamp) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) ParseAllocationDelaySet(log types.Log) (*ContractIAllocationManagerAllocationDelaySet, error) { + event := new(ContractIAllocationManagerAllocationDelaySet) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "AllocationDelaySet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator is returned from FilterEncumberedMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for EncumberedMagnitudeUpdated events raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator struct { + Event *ContractIAllocationManagerEncumberedMagnitudeUpdated // 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 *ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator) 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(ContractIAllocationManagerEncumberedMagnitudeUpdated) + 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(ContractIAllocationManagerEncumberedMagnitudeUpdated) + 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 *ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAllocationManagerEncumberedMagnitudeUpdated represents a EncumberedMagnitudeUpdated event raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerEncumberedMagnitudeUpdated struct { + Operator common.Address + Strategy common.Address + EncumberedMagnitude uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEncumberedMagnitudeUpdated is a free log retrieval operation binding the contract event 0xacf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc55. +// +// Solidity: event EncumberedMagnitudeUpdated(address operator, address strategy, uint64 encumberedMagnitude) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) FilterEncumberedMagnitudeUpdated(opts *bind.FilterOpts) (*ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator, error) { + + logs, sub, err := _ContractIAllocationManager.contract.FilterLogs(opts, "EncumberedMagnitudeUpdated") + if err != nil { + return nil, err + } + return &ContractIAllocationManagerEncumberedMagnitudeUpdatedIterator{contract: _ContractIAllocationManager.contract, event: "EncumberedMagnitudeUpdated", logs: logs, sub: sub}, nil +} + +// WatchEncumberedMagnitudeUpdated is a free log subscription operation binding the contract event 0xacf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc55. +// +// Solidity: event EncumberedMagnitudeUpdated(address operator, address strategy, uint64 encumberedMagnitude) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) WatchEncumberedMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerEncumberedMagnitudeUpdated) (event.Subscription, error) { + + logs, sub, err := _ContractIAllocationManager.contract.WatchLogs(opts, "EncumberedMagnitudeUpdated") + 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(ContractIAllocationManagerEncumberedMagnitudeUpdated) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "EncumberedMagnitudeUpdated", 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 +} + +// ParseEncumberedMagnitudeUpdated is a log parse operation binding the contract event 0xacf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc55. +// +// Solidity: event EncumberedMagnitudeUpdated(address operator, address strategy, uint64 encumberedMagnitude) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) ParseEncumberedMagnitudeUpdated(log types.Log) (*ContractIAllocationManagerEncumberedMagnitudeUpdated, error) { + event := new(ContractIAllocationManagerEncumberedMagnitudeUpdated) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "EncumberedMagnitudeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIAllocationManagerMaxMagnitudeUpdatedIterator is returned from FilterMaxMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for MaxMagnitudeUpdated events raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerMaxMagnitudeUpdatedIterator struct { + Event *ContractIAllocationManagerMaxMagnitudeUpdated // 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 *ContractIAllocationManagerMaxMagnitudeUpdatedIterator) 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(ContractIAllocationManagerMaxMagnitudeUpdated) + 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(ContractIAllocationManagerMaxMagnitudeUpdated) + 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 *ContractIAllocationManagerMaxMagnitudeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAllocationManagerMaxMagnitudeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAllocationManagerMaxMagnitudeUpdated represents a MaxMagnitudeUpdated event raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerMaxMagnitudeUpdated struct { + Operator common.Address + Strategy common.Address + TotalMagnitude uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxMagnitudeUpdated is a free log retrieval operation binding the contract event 0x1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c. +// +// Solidity: event MaxMagnitudeUpdated(address operator, address strategy, uint64 totalMagnitude) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) FilterMaxMagnitudeUpdated(opts *bind.FilterOpts) (*ContractIAllocationManagerMaxMagnitudeUpdatedIterator, error) { + + logs, sub, err := _ContractIAllocationManager.contract.FilterLogs(opts, "MaxMagnitudeUpdated") + if err != nil { + return nil, err + } + return &ContractIAllocationManagerMaxMagnitudeUpdatedIterator{contract: _ContractIAllocationManager.contract, event: "MaxMagnitudeUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxMagnitudeUpdated is a free log subscription operation binding the contract event 0x1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c. +// +// Solidity: event MaxMagnitudeUpdated(address operator, address strategy, uint64 totalMagnitude) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) WatchMaxMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerMaxMagnitudeUpdated) (event.Subscription, error) { + + logs, sub, err := _ContractIAllocationManager.contract.WatchLogs(opts, "MaxMagnitudeUpdated") + 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(ContractIAllocationManagerMaxMagnitudeUpdated) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "MaxMagnitudeUpdated", 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 +} + +// ParseMaxMagnitudeUpdated is a log parse operation binding the contract event 0x1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c. +// +// Solidity: event MaxMagnitudeUpdated(address operator, address strategy, uint64 totalMagnitude) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) ParseMaxMagnitudeUpdated(log types.Log) (*ContractIAllocationManagerMaxMagnitudeUpdated, error) { + event := new(ContractIAllocationManagerMaxMagnitudeUpdated) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "MaxMagnitudeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator is returned from FilterOperatorSetMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for OperatorSetMagnitudeUpdated events raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator struct { + Event *ContractIAllocationManagerOperatorSetMagnitudeUpdated // 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 *ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator) 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(ContractIAllocationManagerOperatorSetMagnitudeUpdated) + 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(ContractIAllocationManagerOperatorSetMagnitudeUpdated) + 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 *ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAllocationManagerOperatorSetMagnitudeUpdated represents a OperatorSetMagnitudeUpdated event raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerOperatorSetMagnitudeUpdated struct { + Operator common.Address + OperatorSet OperatorSet + Strategy common.Address + Magnitude uint64 + EffectTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetMagnitudeUpdated is a free log retrieval operation binding the contract event 0x8b997e53d7b9e5d923d0a21c60df81e1740860d1a8c66b8c63c5047ae20eaaf6. +// +// Solidity: event OperatorSetMagnitudeUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectTimestamp) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) FilterOperatorSetMagnitudeUpdated(opts *bind.FilterOpts) (*ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator, error) { + + logs, sub, err := _ContractIAllocationManager.contract.FilterLogs(opts, "OperatorSetMagnitudeUpdated") + if err != nil { + return nil, err + } + return &ContractIAllocationManagerOperatorSetMagnitudeUpdatedIterator{contract: _ContractIAllocationManager.contract, event: "OperatorSetMagnitudeUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetMagnitudeUpdated is a free log subscription operation binding the contract event 0x8b997e53d7b9e5d923d0a21c60df81e1740860d1a8c66b8c63c5047ae20eaaf6. +// +// Solidity: event OperatorSetMagnitudeUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectTimestamp) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) WatchOperatorSetMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerOperatorSetMagnitudeUpdated) (event.Subscription, error) { + + logs, sub, err := _ContractIAllocationManager.contract.WatchLogs(opts, "OperatorSetMagnitudeUpdated") + 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(ContractIAllocationManagerOperatorSetMagnitudeUpdated) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "OperatorSetMagnitudeUpdated", 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 +} + +// ParseOperatorSetMagnitudeUpdated is a log parse operation binding the contract event 0x8b997e53d7b9e5d923d0a21c60df81e1740860d1a8c66b8c63c5047ae20eaaf6. +// +// Solidity: event OperatorSetMagnitudeUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectTimestamp) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) ParseOperatorSetMagnitudeUpdated(log types.Log) (*ContractIAllocationManagerOperatorSetMagnitudeUpdated, error) { + event := new(ContractIAllocationManagerOperatorSetMagnitudeUpdated) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "OperatorSetMagnitudeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIAllocationManagerOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerOperatorSlashedIterator struct { + Event *ContractIAllocationManagerOperatorSlashed // 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 *ContractIAllocationManagerOperatorSlashedIterator) 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(ContractIAllocationManagerOperatorSlashed) + 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(ContractIAllocationManagerOperatorSlashed) + 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 *ContractIAllocationManagerOperatorSlashedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIAllocationManagerOperatorSlashedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIAllocationManagerOperatorSlashed represents a OperatorSlashed event raised by the ContractIAllocationManager contract. +type ContractIAllocationManagerOperatorSlashed struct { + Operator common.Address + OperatorSet OperatorSet + Strategies []common.Address + WadSlashed []*big.Int + Description string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSlashed is a free log retrieval operation binding the contract event 0x80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe5. +// +// Solidity: event OperatorSlashed(address operator, (address,uint32) operatorSet, address[] strategies, uint256[] wadSlashed, string description) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*ContractIAllocationManagerOperatorSlashedIterator, error) { + + logs, sub, err := _ContractIAllocationManager.contract.FilterLogs(opts, "OperatorSlashed") + if err != nil { + return nil, err + } + return &ContractIAllocationManagerOperatorSlashedIterator{contract: _ContractIAllocationManager.contract, event: "OperatorSlashed", logs: logs, sub: sub}, nil +} + +// WatchOperatorSlashed is a free log subscription operation binding the contract event 0x80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe5. +// +// Solidity: event OperatorSlashed(address operator, (address,uint32) operatorSet, address[] strategies, uint256[] wadSlashed, string description) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *ContractIAllocationManagerOperatorSlashed) (event.Subscription, error) { + + logs, sub, err := _ContractIAllocationManager.contract.WatchLogs(opts, "OperatorSlashed") + 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(ContractIAllocationManagerOperatorSlashed) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "OperatorSlashed", 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 +} + +// ParseOperatorSlashed is a log parse operation binding the contract event 0x80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe5. +// +// Solidity: event OperatorSlashed(address operator, (address,uint32) operatorSet, address[] strategies, uint256[] wadSlashed, string description) +func (_ContractIAllocationManager *ContractIAllocationManagerFilterer) ParseOperatorSlashed(log types.Log) (*ContractIAllocationManagerOperatorSlashed, error) { + event := new(ContractIAllocationManagerOperatorSlashed) + if err := _ContractIAllocationManager.contract.UnpackLog(event, "OperatorSlashed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/IRewardsCoordinator/binding.go b/contracts/bindings/IRewardsCoordinator/binding.go index 7ec7516b..a2960c10 100644 --- a/contracts/bindings/IRewardsCoordinator/binding.go +++ b/contracts/bindings/IRewardsCoordinator/binding.go @@ -29,72 +29,55 @@ var ( _ = abi.ConvertType ) -// IAVSDirectoryOperatorSet is an auto generated low-level Go binding around an user-defined struct. -type IAVSDirectoryOperatorSet struct { - Avs common.Address - OperatorSetId uint32 -} - -// IRewardsCoordinatorDistributionRoot is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorDistributionRoot struct { +// IRewardsCoordinatorTypesDistributionRoot is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesDistributionRoot struct { Root [32]byte RewardsCalculationEndTimestamp uint32 ActivatedAt uint32 Disabled bool } -// IRewardsCoordinatorEarnerTreeMerkleLeaf is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorEarnerTreeMerkleLeaf struct { +// IRewardsCoordinatorTypesEarnerTreeMerkleLeaf is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesEarnerTreeMerkleLeaf struct { Earner common.Address EarnerTokenRoot [32]byte } -// IRewardsCoordinatorOperatorSetRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorOperatorSetRewardsSubmission struct { - RewardType uint8 - OperatorSetId uint32 - StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier - Token common.Address - Amount *big.Int - StartTimestamp uint32 - Duration uint32 -} - -// IRewardsCoordinatorRewardsMerkleClaim is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorRewardsMerkleClaim struct { +// IRewardsCoordinatorTypesRewardsMerkleClaim is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesRewardsMerkleClaim struct { RootIndex uint32 EarnerIndex uint32 EarnerTreeProof []byte - EarnerLeaf IRewardsCoordinatorEarnerTreeMerkleLeaf + EarnerLeaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf TokenIndices []uint32 TokenTreeProofs [][]byte - TokenLeaves []IRewardsCoordinatorTokenTreeMerkleLeaf + TokenLeaves []IRewardsCoordinatorTypesTokenTreeMerkleLeaf } -// IRewardsCoordinatorRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorRewardsSubmission struct { - StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier +// IRewardsCoordinatorTypesRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesRewardsSubmission struct { + StrategiesAndMultipliers []IRewardsCoordinatorTypesStrategyAndMultiplier Token common.Address Amount *big.Int StartTimestamp uint32 Duration uint32 } -// IRewardsCoordinatorStrategyAndMultiplier is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorStrategyAndMultiplier struct { +// IRewardsCoordinatorTypesStrategyAndMultiplier is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesStrategyAndMultiplier struct { Strategy common.Address Multiplier *big.Int } -// IRewardsCoordinatorTokenTreeMerkleLeaf is an auto generated low-level Go binding around an user-defined struct. -type IRewardsCoordinatorTokenTreeMerkleLeaf struct { +// IRewardsCoordinatorTypesTokenTreeMerkleLeaf is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorTypesTokenTreeMerkleLeaf struct { Token common.Address CumulativeEarnings *big.Int } // 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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"rewardsSubmission\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"getOperatorCommissionBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorCommissionUpdateHistoryLength\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"}],\"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\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"rewardOperatorSetForRange\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorSetRewardsSubmission[]\",\"components\":[{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"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\":\"setOperatorCommissionBips\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"commissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"structIRewardsCoordinator.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"OperatorCommissionUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":true,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"newCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetRewardCreated\",\"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\":\"structIRewardsCoordinator.OperatorSetRewardsSubmission\",\"components\":[{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"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\":\"structIRewardsCoordinator.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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}]", + 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\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"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\":[]}]", } // ContractIRewardsCoordinatorABI is the input ABI used to generate the binding from. @@ -122,11 +105,11 @@ type ContractIRewardsCoordinatorCalls interface { ActivationDelay(opts *bind.CallOpts) (uint32, error) - CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) + CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) - CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) + CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) - CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) + CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) ClaimerFor(opts *bind.CallOpts, earner common.Address) (common.Address, error) @@ -134,36 +117,36 @@ type ContractIRewardsCoordinatorCalls interface { CurrRewardsCalculationEndTimestamp(opts *bind.CallOpts) (uint32, error) - GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) + GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) - GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) + GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) - GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorDistributionRoot, error) + GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) GetDistributionRootsLength(opts *bind.CallOpts) (*big.Int, error) - GetOperatorCommissionBips(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (uint16, error) - - GetOperatorCommissionUpdateHistoryLength(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (*big.Int, error) - GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byte) (uint32, error) GlobalOperatorCommissionBips(opts *bind.CallOpts) (uint16, error) + OperatorCommissionBips(opts *bind.CallOpts, operator common.Address, avs common.Address) (uint16, 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 []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) + CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) + + CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) - CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) + CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) DisableRoot(opts *bind.TransactOpts, rootIndex uint32) (*types.Transaction, error) - ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) + Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) - RewardOperatorSetForRange(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorOperatorSetRewardsSubmission) (*types.Transaction, error) + ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) SetActivationDelay(opts *bind.TransactOpts, _activationDelay uint32) (*types.Transaction, error) @@ -171,8 +154,6 @@ type ContractIRewardsCoordinatorTransacts interface { SetGlobalOperatorCommission(opts *bind.TransactOpts, _globalCommissionBips uint16) (*types.Transaction, error) - SetOperatorCommissionBips(opts *bind.TransactOpts, operatorSet IAVSDirectoryOperatorSet, rewardType uint8, commissionBips uint16) (*types.Transaction, error) - SetRewardsForAllSubmitter(opts *bind.TransactOpts, _submitter common.Address, _newValue bool) (*types.Transaction, error) SetRewardsUpdater(opts *bind.TransactOpts, _rewardsUpdater common.Address) (*types.Transaction, error) @@ -206,14 +187,6 @@ type ContractIRewardsCoordinatorFilters interface { WatchGlobalCommissionBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorGlobalCommissionBipsSet) (event.Subscription, error) ParseGlobalCommissionBipsSet(log types.Log) (*ContractIRewardsCoordinatorGlobalCommissionBipsSet, error) - FilterOperatorCommissionUpdated(opts *bind.FilterOpts, operator []common.Address, operatorSet []IAVSDirectoryOperatorSet) (*ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator, error) - WatchOperatorCommissionUpdated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorCommissionUpdated, operator []common.Address, operatorSet []IAVSDirectoryOperatorSet) (event.Subscription, error) - ParseOperatorCommissionUpdated(log types.Log) (*ContractIRewardsCoordinatorOperatorCommissionUpdated, error) - - FilterOperatorSetRewardCreated(opts *bind.FilterOpts, avs []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator, error) - WatchOperatorSetRewardCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorSetRewardCreated, avs []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (event.Subscription, error) - ParseOperatorSetRewardCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorSetRewardCreated, 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) ParseRewardsClaimed(log types.Log) (*ContractIRewardsCoordinatorRewardsClaimed, error) @@ -226,6 +199,10 @@ type ContractIRewardsCoordinatorFilters interface { WatchRewardsSubmissionForAllCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorRewardsSubmissionForAllCreated, submitter []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (event.Subscription, error) ParseRewardsSubmissionForAllCreated(log types.Log) (*ContractIRewardsCoordinatorRewardsSubmissionForAllCreated, error) + FilterRewardsSubmissionForAllEarnersCreated(opts *bind.FilterOpts, tokenHopper []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator, error) + WatchRewardsSubmissionForAllEarnersCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated, tokenHopper []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (event.Subscription, error) + ParseRewardsSubmissionForAllEarnersCreated(log types.Log) (*ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated, error) + FilterRewardsUpdaterSet(opts *bind.FilterOpts, oldRewardsUpdater []common.Address, newRewardsUpdater []common.Address) (*ContractIRewardsCoordinatorRewardsUpdaterSetIterator, error) WatchRewardsUpdaterSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorRewardsUpdaterSet, oldRewardsUpdater []common.Address, newRewardsUpdater []common.Address) (event.Subscription, error) ParseRewardsUpdaterSet(log types.Log) (*ContractIRewardsCoordinatorRewardsUpdaterSet, error) @@ -574,7 +551,7 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Ac // CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872. // // Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) { var out []interface{} err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "calculateEarnerLeafHash", leaf) @@ -591,21 +568,21 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) Calculate // CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872. // // Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) { return _ContractIRewardsCoordinator.Contract.CalculateEarnerLeafHash(&_ContractIRewardsCoordinator.CallOpts, leaf) } // CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872. // // Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) { return _ContractIRewardsCoordinator.Contract.CalculateEarnerLeafHash(&_ContractIRewardsCoordinator.CallOpts, leaf) } // CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448. // // Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) { var out []interface{} err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "calculateTokenLeafHash", leaf) @@ -622,21 +599,21 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) Calculate // CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448. // // Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) { return _ContractIRewardsCoordinator.Contract.CalculateTokenLeafHash(&_ContractIRewardsCoordinator.CallOpts, leaf) } // CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448. // // Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) { return _ContractIRewardsCoordinator.Contract.CalculateTokenLeafHash(&_ContractIRewardsCoordinator.CallOpts, leaf) } // CheckClaim is a free data retrieval call binding the contract method 0x5e9d8348. // // Solidity: function checkClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim) view returns(bool) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) { var out []interface{} err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "checkClaim", claim) @@ -653,14 +630,14 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) CheckClai // CheckClaim is a free data retrieval call binding the contract method 0x5e9d8348. // // Solidity: function checkClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim) view returns(bool) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) { return _ContractIRewardsCoordinator.Contract.CheckClaim(&_ContractIRewardsCoordinator.CallOpts, claim) } // CheckClaim is a free data retrieval call binding the contract method 0x5e9d8348. // // Solidity: function checkClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim) view returns(bool) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) { return _ContractIRewardsCoordinator.Contract.CheckClaim(&_ContractIRewardsCoordinator.CallOpts, claim) } @@ -760,15 +737,15 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Cu // GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf. // // Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) { var out []interface{} err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getCurrentClaimableDistributionRoot") if err != nil { - return *new(IRewardsCoordinatorDistributionRoot), err + return *new(IRewardsCoordinatorTypesDistributionRoot), err } - out0 := *abi.ConvertType(out[0], new(IRewardsCoordinatorDistributionRoot)).(*IRewardsCoordinatorDistributionRoot) + out0 := *abi.ConvertType(out[0], new(IRewardsCoordinatorTypesDistributionRoot)).(*IRewardsCoordinatorTypesDistributionRoot) return out0, err @@ -777,29 +754,29 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetCurren // GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf. // // Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) { return _ContractIRewardsCoordinator.Contract.GetCurrentClaimableDistributionRoot(&_ContractIRewardsCoordinator.CallOpts) } // GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf. // // Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) { return _ContractIRewardsCoordinator.Contract.GetCurrentClaimableDistributionRoot(&_ContractIRewardsCoordinator.CallOpts) } // GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4. // // Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) { var out []interface{} err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getCurrentDistributionRoot") if err != nil { - return *new(IRewardsCoordinatorDistributionRoot), err + return *new(IRewardsCoordinatorTypesDistributionRoot), err } - out0 := *abi.ConvertType(out[0], new(IRewardsCoordinatorDistributionRoot)).(*IRewardsCoordinatorDistributionRoot) + out0 := *abi.ConvertType(out[0], new(IRewardsCoordinatorTypesDistributionRoot)).(*IRewardsCoordinatorTypesDistributionRoot) return out0, err @@ -808,29 +785,29 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetCurren // GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4. // // Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) { return _ContractIRewardsCoordinator.Contract.GetCurrentDistributionRoot(&_ContractIRewardsCoordinator.CallOpts) } // GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4. // // Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) { return _ContractIRewardsCoordinator.Contract.GetCurrentDistributionRoot(&_ContractIRewardsCoordinator.CallOpts) } // GetDistributionRootAtIndex is a free data retrieval call binding the contract method 0xde02e503. // // Solidity: function getDistributionRootAtIndex(uint256 index) view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) { var out []interface{} err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getDistributionRootAtIndex", index) if err != nil { - return *new(IRewardsCoordinatorDistributionRoot), err + return *new(IRewardsCoordinatorTypesDistributionRoot), err } - out0 := *abi.ConvertType(out[0], new(IRewardsCoordinatorDistributionRoot)).(*IRewardsCoordinatorDistributionRoot) + out0 := *abi.ConvertType(out[0], new(IRewardsCoordinatorTypesDistributionRoot)).(*IRewardsCoordinatorTypesDistributionRoot) return out0, err @@ -839,14 +816,14 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetDistri // GetDistributionRootAtIndex is a free data retrieval call binding the contract method 0xde02e503. // // Solidity: function getDistributionRootAtIndex(uint256 index) view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) { return _ContractIRewardsCoordinator.Contract.GetDistributionRootAtIndex(&_ContractIRewardsCoordinator.CallOpts, index) } // GetDistributionRootAtIndex is a free data retrieval call binding the contract method 0xde02e503. // // Solidity: function getDistributionRootAtIndex(uint256 index) view returns((bytes32,uint32,uint32,bool)) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) { return _ContractIRewardsCoordinator.Contract.GetDistributionRootAtIndex(&_ContractIRewardsCoordinator.CallOpts, index) } @@ -881,68 +858,6 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Ge return _ContractIRewardsCoordinator.Contract.GetDistributionRootsLength(&_ContractIRewardsCoordinator.CallOpts) } -// GetOperatorCommissionBips is a free data retrieval call binding the contract method 0x4d7a80d4. -// -// Solidity: function getOperatorCommissionBips(address operator, (address,uint32) operatorSet, uint8 rewardType) view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetOperatorCommissionBips(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (uint16, error) { - var out []interface{} - err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getOperatorCommissionBips", operator, operatorSet, rewardType) - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// GetOperatorCommissionBips is a free data retrieval call binding the contract method 0x4d7a80d4. -// -// Solidity: function getOperatorCommissionBips(address operator, (address,uint32) operatorSet, uint8 rewardType) view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetOperatorCommissionBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (uint16, error) { - return _ContractIRewardsCoordinator.Contract.GetOperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts, operator, operatorSet, rewardType) -} - -// GetOperatorCommissionBips is a free data retrieval call binding the contract method 0x4d7a80d4. -// -// Solidity: function getOperatorCommissionBips(address operator, (address,uint32) operatorSet, uint8 rewardType) view returns(uint16) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetOperatorCommissionBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (uint16, error) { - return _ContractIRewardsCoordinator.Contract.GetOperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts, operator, operatorSet, rewardType) -} - -// GetOperatorCommissionUpdateHistoryLength is a free data retrieval call binding the contract method 0xc336f19d. -// -// Solidity: function getOperatorCommissionUpdateHistoryLength(address operator, (address,uint32) operatorSet, uint8 rewardType) view returns(uint256) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetOperatorCommissionUpdateHistoryLength(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (*big.Int, error) { - var out []interface{} - err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getOperatorCommissionUpdateHistoryLength", operator, operatorSet, rewardType) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetOperatorCommissionUpdateHistoryLength is a free data retrieval call binding the contract method 0xc336f19d. -// -// Solidity: function getOperatorCommissionUpdateHistoryLength(address operator, (address,uint32) operatorSet, uint8 rewardType) view returns(uint256) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetOperatorCommissionUpdateHistoryLength(operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (*big.Int, error) { - return _ContractIRewardsCoordinator.Contract.GetOperatorCommissionUpdateHistoryLength(&_ContractIRewardsCoordinator.CallOpts, operator, operatorSet, rewardType) -} - -// GetOperatorCommissionUpdateHistoryLength is a free data retrieval call binding the contract method 0xc336f19d. -// -// Solidity: function getOperatorCommissionUpdateHistoryLength(address operator, (address,uint32) operatorSet, uint8 rewardType) view returns(uint256) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetOperatorCommissionUpdateHistoryLength(operator common.Address, operatorSet IAVSDirectoryOperatorSet, rewardType uint8) (*big.Int, error) { - return _ContractIRewardsCoordinator.Contract.GetOperatorCommissionUpdateHistoryLength(&_ContractIRewardsCoordinator.CallOpts, operator, operatorSet, rewardType) -} - // GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. // // Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) @@ -1005,6 +920,37 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Gl return _ContractIRewardsCoordinator.Contract.GlobalOperatorCommissionBips(&_ContractIRewardsCoordinator.CallOpts) } +// OperatorCommissionBips is a free data retrieval call binding the contract method 0x22f19a64. +// +// 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) { + var out []interface{} + err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "operatorCommissionBips", operator, avs) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// OperatorCommissionBips is a free data retrieval call binding the contract method 0x22f19a64. +// +// 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) +} + +// OperatorCommissionBips is a free data retrieval call binding the contract method 0x22f19a64. +// +// 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) +} + // RewardsUpdater is a free data retrieval call binding the contract method 0xfbf1e2c1. // // Solidity: function rewardsUpdater() view returns(address) @@ -1039,43 +985,64 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Re // CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. // // Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { return _ContractIRewardsCoordinator.contract.Transact(opts, "createAVSRewardsSubmission", rewardsSubmissions) } // CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. // // Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { return _ContractIRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) } // CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. // // Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { return _ContractIRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) } +// CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce. +// +// Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "createRewardsForAllEarners", rewardsSubmissions) +} + +// CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce. +// +// Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateRewardsForAllEarners(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) +} + +// CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce. +// +// Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateRewardsForAllEarners(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) +} + // CreateRewardsForAllSubmission is a paid mutator transaction binding the contract method 0x36af41fa. // -// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmission) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "createRewardsForAllSubmission", rewardsSubmission) +// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "createRewardsForAllSubmission", rewardsSubmissions) } // CreateRewardsForAllSubmission is a paid mutator transaction binding the contract method 0x36af41fa. // -// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmission) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateRewardsForAllSubmission(rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmission) +// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) } // CreateRewardsForAllSubmission is a paid mutator transaction binding the contract method 0x36af41fa. // -// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmission) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateRewardsForAllSubmission(rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmission) +// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) } // DisableRoot is a paid mutator transaction binding the contract method 0xf96abf2e. @@ -1099,46 +1066,46 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession return _ContractIRewardsCoordinator.Contract.DisableRoot(&_ContractIRewardsCoordinator.TransactOpts, rootIndex) } -// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. +// Initialize is a paid mutator transaction binding the contract method 0xd4540a55. // -// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "processClaim", claim, recipient) +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _globalCommissionBips) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus, _rewardsUpdater, _activationDelay, _globalCommissionBips) } -// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. +// Initialize is a paid mutator transaction binding the contract method 0xd4540a55. // -// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.ProcessClaim(&_ContractIRewardsCoordinator.TransactOpts, claim, recipient) +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _globalCommissionBips) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.Initialize(&_ContractIRewardsCoordinator.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _rewardsUpdater, _activationDelay, _globalCommissionBips) } -// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. +// Initialize is a paid mutator transaction binding the contract method 0xd4540a55. // -// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.ProcessClaim(&_ContractIRewardsCoordinator.TransactOpts, claim, recipient) +// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _globalCommissionBips) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _globalCommissionBips uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.Initialize(&_ContractIRewardsCoordinator.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _rewardsUpdater, _activationDelay, _globalCommissionBips) } -// RewardOperatorSetForRange is a paid mutator transaction binding the contract method 0x2c9c60cf. +// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. // -// Solidity: function rewardOperatorSetForRange((uint8,uint32,(address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) RewardOperatorSetForRange(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorOperatorSetRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "rewardOperatorSetForRange", rewardsSubmissions) +// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "processClaim", claim, recipient) } -// RewardOperatorSetForRange is a paid mutator transaction binding the contract method 0x2c9c60cf. +// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. // -// Solidity: function rewardOperatorSetForRange((uint8,uint32,(address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) RewardOperatorSetForRange(rewardsSubmissions []IRewardsCoordinatorOperatorSetRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.RewardOperatorSetForRange(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) +// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.ProcessClaim(&_ContractIRewardsCoordinator.TransactOpts, claim, recipient) } -// RewardOperatorSetForRange is a paid mutator transaction binding the contract method 0x2c9c60cf. +// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d. // -// Solidity: function rewardOperatorSetForRange((uint8,uint32,(address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) RewardOperatorSetForRange(rewardsSubmissions []IRewardsCoordinatorOperatorSetRewardsSubmission) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.RewardOperatorSetForRange(&_ContractIRewardsCoordinator.TransactOpts, rewardsSubmissions) +// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.ProcessClaim(&_ContractIRewardsCoordinator.TransactOpts, claim, recipient) } // SetActivationDelay is a paid mutator transaction binding the contract method 0x58baaa3e. @@ -1204,27 +1171,6 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession return _ContractIRewardsCoordinator.Contract.SetGlobalOperatorCommission(&_ContractIRewardsCoordinator.TransactOpts, _globalCommissionBips) } -// SetOperatorCommissionBips is a paid mutator transaction binding the contract method 0x3c8fcf7c. -// -// Solidity: function setOperatorCommissionBips((address,uint32) operatorSet, uint8 rewardType, uint16 commissionBips) returns(uint32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetOperatorCommissionBips(opts *bind.TransactOpts, operatorSet IAVSDirectoryOperatorSet, rewardType uint8, commissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.contract.Transact(opts, "setOperatorCommissionBips", operatorSet, rewardType, commissionBips) -} - -// SetOperatorCommissionBips is a paid mutator transaction binding the contract method 0x3c8fcf7c. -// -// Solidity: function setOperatorCommissionBips((address,uint32) operatorSet, uint8 rewardType, uint16 commissionBips) returns(uint32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetOperatorCommissionBips(operatorSet IAVSDirectoryOperatorSet, rewardType uint8, commissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.SetOperatorCommissionBips(&_ContractIRewardsCoordinator.TransactOpts, operatorSet, rewardType, commissionBips) -} - -// SetOperatorCommissionBips is a paid mutator transaction binding the contract method 0x3c8fcf7c. -// -// Solidity: function setOperatorCommissionBips((address,uint32) operatorSet, uint8 rewardType, uint16 commissionBips) returns(uint32) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetOperatorCommissionBips(operatorSet IAVSDirectoryOperatorSet, rewardType uint8, commissionBips uint16) (*types.Transaction, error) { - return _ContractIRewardsCoordinator.Contract.SetOperatorCommissionBips(&_ContractIRewardsCoordinator.TransactOpts, operatorSet, rewardType, commissionBips) -} - // SetRewardsForAllSubmitter is a paid mutator transaction binding the contract method 0x0eb38345. // // Solidity: function setRewardsForAllSubmitter(address _submitter, bool _newValue) returns() @@ -1360,7 +1306,7 @@ type ContractIRewardsCoordinatorAVSRewardsSubmissionCreated struct { Avs common.Address SubmissionNonce *big.Int RewardsSubmissionHash [32]byte - RewardsSubmission IRewardsCoordinatorRewardsSubmission + RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission Raw types.Log // Blockchain specific contextual infos } @@ -2190,325 +2136,6 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseGl return event, nil } -// ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator is returned from FilterOperatorCommissionUpdated and is used to iterate over the raw logs and unpacked data for OperatorCommissionUpdated events raised by the ContractIRewardsCoordinator contract. -type ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator struct { - Event *ContractIRewardsCoordinatorOperatorCommissionUpdated // 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 *ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator) 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(ContractIRewardsCoordinatorOperatorCommissionUpdated) - 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(ContractIRewardsCoordinatorOperatorCommissionUpdated) - 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 *ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractIRewardsCoordinatorOperatorCommissionUpdated represents a OperatorCommissionUpdated event raised by the ContractIRewardsCoordinator contract. -type ContractIRewardsCoordinatorOperatorCommissionUpdated struct { - Operator common.Address - OperatorSet IAVSDirectoryOperatorSet - RewardType uint8 - NewCommissionBips uint16 - EffectTimestamp uint32 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOperatorCommissionUpdated is a free log retrieval operation binding the contract event 0x811b77cd39953efa46bbcbf8afd10756fac937e63667afdd6bab4dd69c788dba. -// -// Solidity: event OperatorCommissionUpdated(address indexed operator, (address,uint32) indexed operatorSet, uint8 rewardType, uint16 newCommissionBips, uint32 effectTimestamp) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorCommissionUpdated(opts *bind.FilterOpts, operator []common.Address, operatorSet []IAVSDirectoryOperatorSet) (*ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var operatorSetRule []interface{} - for _, operatorSetItem := range operatorSet { - operatorSetRule = append(operatorSetRule, operatorSetItem) - } - - logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorCommissionUpdated", operatorRule, operatorSetRule) - if err != nil { - return nil, err - } - return &ContractIRewardsCoordinatorOperatorCommissionUpdatedIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorCommissionUpdated", logs: logs, sub: sub}, nil -} - -// WatchOperatorCommissionUpdated is a free log subscription operation binding the contract event 0x811b77cd39953efa46bbcbf8afd10756fac937e63667afdd6bab4dd69c788dba. -// -// Solidity: event OperatorCommissionUpdated(address indexed operator, (address,uint32) indexed operatorSet, uint8 rewardType, uint16 newCommissionBips, uint32 effectTimestamp) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorCommissionUpdated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorCommissionUpdated, operator []common.Address, operatorSet []IAVSDirectoryOperatorSet) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var operatorSetRule []interface{} - for _, operatorSetItem := range operatorSet { - operatorSetRule = append(operatorSetRule, operatorSetItem) - } - - logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorCommissionUpdated", operatorRule, operatorSetRule) - 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(ContractIRewardsCoordinatorOperatorCommissionUpdated) - if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorCommissionUpdated", 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 -} - -// ParseOperatorCommissionUpdated is a log parse operation binding the contract event 0x811b77cd39953efa46bbcbf8afd10756fac937e63667afdd6bab4dd69c788dba. -// -// Solidity: event OperatorCommissionUpdated(address indexed operator, (address,uint32) indexed operatorSet, uint8 rewardType, uint16 newCommissionBips, uint32 effectTimestamp) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorCommissionUpdated(log types.Log) (*ContractIRewardsCoordinatorOperatorCommissionUpdated, error) { - event := new(ContractIRewardsCoordinatorOperatorCommissionUpdated) - if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorCommissionUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator is returned from FilterOperatorSetRewardCreated and is used to iterate over the raw logs and unpacked data for OperatorSetRewardCreated events raised by the ContractIRewardsCoordinator contract. -type ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator struct { - Event *ContractIRewardsCoordinatorOperatorSetRewardCreated // 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 *ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator) 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(ContractIRewardsCoordinatorOperatorSetRewardCreated) - 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(ContractIRewardsCoordinatorOperatorSetRewardCreated) - 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 *ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractIRewardsCoordinatorOperatorSetRewardCreated represents a OperatorSetRewardCreated event raised by the ContractIRewardsCoordinator contract. -type ContractIRewardsCoordinatorOperatorSetRewardCreated struct { - Avs common.Address - SubmissionNonce *big.Int - RewardsSubmissionHash [32]byte - RewardsSubmission IRewardsCoordinatorOperatorSetRewardsSubmission - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOperatorSetRewardCreated is a free log retrieval operation binding the contract event 0x29a8ee4f31259a5f344a2cca256440ea6638a3278972b1ee9a7aab99b00aa3b2. -// -// Solidity: event OperatorSetRewardCreated(address indexed avs, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, (uint8,uint32,(address,uint96)[],address,uint256,uint32,uint32) rewardsSubmission) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorSetRewardCreated(opts *bind.FilterOpts, avs []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator, error) { - - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } - var submissionNonceRule []interface{} - for _, submissionNonceItem := range submissionNonce { - submissionNonceRule = append(submissionNonceRule, submissionNonceItem) - } - var rewardsSubmissionHashRule []interface{} - for _, rewardsSubmissionHashItem := range rewardsSubmissionHash { - rewardsSubmissionHashRule = append(rewardsSubmissionHashRule, rewardsSubmissionHashItem) - } - - logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorSetRewardCreated", avsRule, submissionNonceRule, rewardsSubmissionHashRule) - if err != nil { - return nil, err - } - return &ContractIRewardsCoordinatorOperatorSetRewardCreatedIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorSetRewardCreated", logs: logs, sub: sub}, nil -} - -// WatchOperatorSetRewardCreated is a free log subscription operation binding the contract event 0x29a8ee4f31259a5f344a2cca256440ea6638a3278972b1ee9a7aab99b00aa3b2. -// -// Solidity: event OperatorSetRewardCreated(address indexed avs, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, (uint8,uint32,(address,uint96)[],address,uint256,uint32,uint32) rewardsSubmission) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorSetRewardCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorSetRewardCreated, avs []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (event.Subscription, error) { - - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } - var submissionNonceRule []interface{} - for _, submissionNonceItem := range submissionNonce { - submissionNonceRule = append(submissionNonceRule, submissionNonceItem) - } - var rewardsSubmissionHashRule []interface{} - for _, rewardsSubmissionHashItem := range rewardsSubmissionHash { - rewardsSubmissionHashRule = append(rewardsSubmissionHashRule, rewardsSubmissionHashItem) - } - - logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorSetRewardCreated", avsRule, submissionNonceRule, rewardsSubmissionHashRule) - 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(ContractIRewardsCoordinatorOperatorSetRewardCreated) - if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorSetRewardCreated", 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 -} - -// ParseOperatorSetRewardCreated is a log parse operation binding the contract event 0x29a8ee4f31259a5f344a2cca256440ea6638a3278972b1ee9a7aab99b00aa3b2. -// -// Solidity: event OperatorSetRewardCreated(address indexed avs, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, (uint8,uint32,(address,uint96)[],address,uint256,uint32,uint32) rewardsSubmission) -func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorSetRewardCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorSetRewardCreated, error) { - event := new(ContractIRewardsCoordinatorOperatorSetRewardCreated) - if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorSetRewardCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ContractIRewardsCoordinatorRewardsClaimedIterator is returned from FilterRewardsClaimed and is used to iterate over the raw logs and unpacked data for RewardsClaimed events raised by the ContractIRewardsCoordinator contract. type ContractIRewardsCoordinatorRewardsClaimedIterator struct { Event *ContractIRewardsCoordinatorRewardsClaimed // Event containing the contract specifics and raw log @@ -2908,7 +2535,7 @@ type ContractIRewardsCoordinatorRewardsSubmissionForAllCreated struct { Submitter common.Address SubmissionNonce *big.Int RewardsSubmissionHash [32]byte - RewardsSubmission IRewardsCoordinatorRewardsSubmission + RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission Raw types.Log // Blockchain specific contextual infos } @@ -2999,6 +2626,169 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseRe return event, nil } +// ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator is returned from FilterRewardsSubmissionForAllEarnersCreated and is used to iterate over the raw logs and unpacked data for RewardsSubmissionForAllEarnersCreated events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator struct { + Event *ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated // 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 *ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator) 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(ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated) + 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(ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated) + 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 *ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated represents a RewardsSubmissionForAllEarnersCreated event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated struct { + TokenHopper common.Address + SubmissionNonce *big.Int + RewardsSubmissionHash [32]byte + RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRewardsSubmissionForAllEarnersCreated is a free log retrieval operation binding the contract event 0x5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b. +// +// Solidity: event RewardsSubmissionForAllEarnersCreated(address indexed tokenHopper, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, ((address,uint96)[],address,uint256,uint32,uint32) rewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterRewardsSubmissionForAllEarnersCreated(opts *bind.FilterOpts, tokenHopper []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator, error) { + + var tokenHopperRule []interface{} + for _, tokenHopperItem := range tokenHopper { + tokenHopperRule = append(tokenHopperRule, tokenHopperItem) + } + var submissionNonceRule []interface{} + for _, submissionNonceItem := range submissionNonce { + submissionNonceRule = append(submissionNonceRule, submissionNonceItem) + } + var rewardsSubmissionHashRule []interface{} + for _, rewardsSubmissionHashItem := range rewardsSubmissionHash { + rewardsSubmissionHashRule = append(rewardsSubmissionHashRule, rewardsSubmissionHashItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "RewardsSubmissionForAllEarnersCreated", tokenHopperRule, submissionNonceRule, rewardsSubmissionHashRule) + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreatedIterator{contract: _ContractIRewardsCoordinator.contract, event: "RewardsSubmissionForAllEarnersCreated", logs: logs, sub: sub}, nil +} + +// WatchRewardsSubmissionForAllEarnersCreated is a free log subscription operation binding the contract event 0x5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b. +// +// Solidity: event RewardsSubmissionForAllEarnersCreated(address indexed tokenHopper, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, ((address,uint96)[],address,uint256,uint32,uint32) rewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchRewardsSubmissionForAllEarnersCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated, tokenHopper []common.Address, submissionNonce []*big.Int, rewardsSubmissionHash [][32]byte) (event.Subscription, error) { + + var tokenHopperRule []interface{} + for _, tokenHopperItem := range tokenHopper { + tokenHopperRule = append(tokenHopperRule, tokenHopperItem) + } + var submissionNonceRule []interface{} + for _, submissionNonceItem := range submissionNonce { + submissionNonceRule = append(submissionNonceRule, submissionNonceItem) + } + var rewardsSubmissionHashRule []interface{} + for _, rewardsSubmissionHashItem := range rewardsSubmissionHash { + rewardsSubmissionHashRule = append(rewardsSubmissionHashRule, rewardsSubmissionHashItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "RewardsSubmissionForAllEarnersCreated", tokenHopperRule, submissionNonceRule, rewardsSubmissionHashRule) + 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(ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "RewardsSubmissionForAllEarnersCreated", 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 +} + +// ParseRewardsSubmissionForAllEarnersCreated is a log parse operation binding the contract event 0x5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b. +// +// Solidity: event RewardsSubmissionForAllEarnersCreated(address indexed tokenHopper, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, ((address,uint96)[],address,uint256,uint32,uint32) rewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseRewardsSubmissionForAllEarnersCreated(log types.Log) (*ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated, error) { + event := new(ContractIRewardsCoordinatorRewardsSubmissionForAllEarnersCreated) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "RewardsSubmissionForAllEarnersCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ContractIRewardsCoordinatorRewardsUpdaterSetIterator is returned from FilterRewardsUpdaterSet and is used to iterate over the raw logs and unpacked data for RewardsUpdaterSet events raised by the ContractIRewardsCoordinator contract. type ContractIRewardsCoordinatorRewardsUpdaterSetIterator struct { Event *ContractIRewardsCoordinatorRewardsUpdaterSet // Event containing the contract specifics and raw log diff --git a/contracts/bindings/ISlasher/binding.go b/contracts/bindings/ISlasher/binding.go deleted file mode 100644 index 153a5d45..00000000 --- a/contracts/bindings/ISlasher/binding.go +++ /dev/null @@ -1,1568 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package contractISlasher - -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 -) - -// ISlasherMiddlewareTimes is an auto generated low-level Go binding around an user-defined struct. -type ISlasherMiddlewareTimes struct { - StalestUpdateBlock uint32 - LatestServeUntilBlock uint32 -} - -// ContractISlasherMetaData contains all meta data concerning the ContractISlasher contract. -var ContractISlasherMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"canSlash\",\"inputs\":[{\"name\":\"toBeSlashed\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"slashingContract\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canWithdraw\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"contractCanSlashOperatorUntilBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"serviceContract\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"toBeFrozen\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCorrectValueForInsertAfter\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"updateBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMiddlewareTimesIndexServeUntilBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMiddlewareTimesIndexStalestUpdateBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isFrozen\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestUpdateBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"serviceContract\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"middlewareTimesLength\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorToMiddlewareTimes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"arrayIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structISlasher.MiddlewareTimes\",\"components\":[{\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorWhitelistedContractsLinkedListEntry\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorWhitelistedContractsLinkedListSize\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"optIntoSlashing\",\"inputs\":[{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordFirstStakeUpdate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"serveUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordLastStakeUpdateAndRevokeSlashingAbility\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"serveUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordStakeUpdate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"updateBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"serveUntilBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"insertAfter\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resetFrozenStatus\",\"inputs\":[{\"name\":\"frozenAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"FrozenStatusReset\",\"inputs\":[{\"name\":\"previouslySlashedAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MiddlewareTimesAdded\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorFrozen\",\"inputs\":[{\"name\":\"slashedOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"slashingContract\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OptedIntoSlashing\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"contractAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingAbilityRevoked\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"contractAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"contractCanSlashOperatorUntilBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false}]", -} - -// ContractISlasherABI is the input ABI used to generate the binding from. -// Deprecated: Use ContractISlasherMetaData.ABI instead. -var ContractISlasherABI = ContractISlasherMetaData.ABI - -// ContractISlasherMethods is an auto generated interface around an Ethereum contract. -type ContractISlasherMethods interface { - ContractISlasherCalls - ContractISlasherTransacts - ContractISlasherFilters -} - -// ContractISlasherCalls is an auto generated interface that defines the call methods available for an Ethereum contract. -type ContractISlasherCalls interface { - CanSlash(opts *bind.CallOpts, toBeSlashed common.Address, slashingContract common.Address) (bool, error) - - ContractCanSlashOperatorUntilBlock(opts *bind.CallOpts, operator common.Address, serviceContract common.Address) (uint32, error) - - Delegation(opts *bind.CallOpts) (common.Address, error) - - GetCorrectValueForInsertAfter(opts *bind.CallOpts, operator common.Address, updateBlock uint32) (*big.Int, error) - - GetMiddlewareTimesIndexServeUntilBlock(opts *bind.CallOpts, operator common.Address, index uint32) (uint32, error) - - GetMiddlewareTimesIndexStalestUpdateBlock(opts *bind.CallOpts, operator common.Address, index uint32) (uint32, error) - - IsFrozen(opts *bind.CallOpts, staker common.Address) (bool, error) - - LatestUpdateBlock(opts *bind.CallOpts, operator common.Address, serviceContract common.Address) (uint32, error) - - MiddlewareTimesLength(opts *bind.CallOpts, operator common.Address) (*big.Int, error) - - OperatorToMiddlewareTimes(opts *bind.CallOpts, operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) - - OperatorWhitelistedContractsLinkedListEntry(opts *bind.CallOpts, operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) - - OperatorWhitelistedContractsLinkedListSize(opts *bind.CallOpts, operator common.Address) (*big.Int, error) - - StrategyManager(opts *bind.CallOpts) (common.Address, error) -} - -// ContractISlasherTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. -type ContractISlasherTransacts interface { - CanWithdraw(opts *bind.TransactOpts, operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) - - FreezeOperator(opts *bind.TransactOpts, toBeFrozen common.Address) (*types.Transaction, error) - - OptIntoSlashing(opts *bind.TransactOpts, contractAddress common.Address) (*types.Transaction, error) - - RecordFirstStakeUpdate(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) - - RecordLastStakeUpdateAndRevokeSlashingAbility(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) - - RecordStakeUpdate(opts *bind.TransactOpts, operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) - - ResetFrozenStatus(opts *bind.TransactOpts, frozenAddresses []common.Address) (*types.Transaction, error) -} - -// ContractISlasherFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. -type ContractISlasherFilters interface { - FilterFrozenStatusReset(opts *bind.FilterOpts, previouslySlashedAddress []common.Address) (*ContractISlasherFrozenStatusResetIterator, error) - WatchFrozenStatusReset(opts *bind.WatchOpts, sink chan<- *ContractISlasherFrozenStatusReset, previouslySlashedAddress []common.Address) (event.Subscription, error) - ParseFrozenStatusReset(log types.Log) (*ContractISlasherFrozenStatusReset, error) - - FilterMiddlewareTimesAdded(opts *bind.FilterOpts) (*ContractISlasherMiddlewareTimesAddedIterator, error) - WatchMiddlewareTimesAdded(opts *bind.WatchOpts, sink chan<- *ContractISlasherMiddlewareTimesAdded) (event.Subscription, error) - ParseMiddlewareTimesAdded(log types.Log) (*ContractISlasherMiddlewareTimesAdded, error) - - FilterOperatorFrozen(opts *bind.FilterOpts, slashedOperator []common.Address, slashingContract []common.Address) (*ContractISlasherOperatorFrozenIterator, error) - WatchOperatorFrozen(opts *bind.WatchOpts, sink chan<- *ContractISlasherOperatorFrozen, slashedOperator []common.Address, slashingContract []common.Address) (event.Subscription, error) - ParseOperatorFrozen(log types.Log) (*ContractISlasherOperatorFrozen, error) - - FilterOptedIntoSlashing(opts *bind.FilterOpts, operator []common.Address, contractAddress []common.Address) (*ContractISlasherOptedIntoSlashingIterator, error) - WatchOptedIntoSlashing(opts *bind.WatchOpts, sink chan<- *ContractISlasherOptedIntoSlashing, operator []common.Address, contractAddress []common.Address) (event.Subscription, error) - ParseOptedIntoSlashing(log types.Log) (*ContractISlasherOptedIntoSlashing, error) - - FilterSlashingAbilityRevoked(opts *bind.FilterOpts, operator []common.Address, contractAddress []common.Address) (*ContractISlasherSlashingAbilityRevokedIterator, error) - WatchSlashingAbilityRevoked(opts *bind.WatchOpts, sink chan<- *ContractISlasherSlashingAbilityRevoked, operator []common.Address, contractAddress []common.Address) (event.Subscription, error) - ParseSlashingAbilityRevoked(log types.Log) (*ContractISlasherSlashingAbilityRevoked, error) -} - -// ContractISlasher is an auto generated Go binding around an Ethereum contract. -type ContractISlasher struct { - ContractISlasherCaller // Read-only binding to the contract - ContractISlasherTransactor // Write-only binding to the contract - ContractISlasherFilterer // Log filterer for contract events -} - -// ContractISlasher implements the ContractISlasherMethods interface. -var _ ContractISlasherMethods = (*ContractISlasher)(nil) - -// ContractISlasherCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContractISlasherCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContractISlasherCaller implements the ContractISlasherCalls interface. -var _ ContractISlasherCalls = (*ContractISlasherCaller)(nil) - -// ContractISlasherTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContractISlasherTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContractISlasherTransactor implements the ContractISlasherTransacts interface. -var _ ContractISlasherTransacts = (*ContractISlasherTransactor)(nil) - -// ContractISlasherFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContractISlasherFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContractISlasherFilterer implements the ContractISlasherFilters interface. -var _ ContractISlasherFilters = (*ContractISlasherFilterer)(nil) - -// ContractISlasherSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContractISlasherSession struct { - Contract *ContractISlasher // 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 -} - -// ContractISlasherCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContractISlasherCallerSession struct { - Contract *ContractISlasherCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContractISlasherTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContractISlasherTransactorSession struct { - Contract *ContractISlasherTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContractISlasherRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContractISlasherRaw struct { - Contract *ContractISlasher // Generic contract binding to access the raw methods on -} - -// ContractISlasherCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContractISlasherCallerRaw struct { - Contract *ContractISlasherCaller // Generic read-only contract binding to access the raw methods on -} - -// ContractISlasherTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContractISlasherTransactorRaw struct { - Contract *ContractISlasherTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContractISlasher creates a new instance of ContractISlasher, bound to a specific deployed contract. -func NewContractISlasher(address common.Address, backend bind.ContractBackend) (*ContractISlasher, error) { - contract, err := bindContractISlasher(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ContractISlasher{ContractISlasherCaller: ContractISlasherCaller{contract: contract}, ContractISlasherTransactor: ContractISlasherTransactor{contract: contract}, ContractISlasherFilterer: ContractISlasherFilterer{contract: contract}}, nil -} - -// NewContractISlasherCaller creates a new read-only instance of ContractISlasher, bound to a specific deployed contract. -func NewContractISlasherCaller(address common.Address, caller bind.ContractCaller) (*ContractISlasherCaller, error) { - contract, err := bindContractISlasher(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContractISlasherCaller{contract: contract}, nil -} - -// NewContractISlasherTransactor creates a new write-only instance of ContractISlasher, bound to a specific deployed contract. -func NewContractISlasherTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractISlasherTransactor, error) { - contract, err := bindContractISlasher(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContractISlasherTransactor{contract: contract}, nil -} - -// NewContractISlasherFilterer creates a new log filterer instance of ContractISlasher, bound to a specific deployed contract. -func NewContractISlasherFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractISlasherFilterer, error) { - contract, err := bindContractISlasher(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContractISlasherFilterer{contract: contract}, nil -} - -// bindContractISlasher binds a generic wrapper to an already deployed contract. -func bindContractISlasher(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContractISlasherMetaData.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 (_ContractISlasher *ContractISlasherRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContractISlasher.Contract.ContractISlasherCaller.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 (_ContractISlasher *ContractISlasherRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContractISlasher.Contract.ContractISlasherTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ContractISlasher *ContractISlasherRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContractISlasher.Contract.ContractISlasherTransactor.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 (_ContractISlasher *ContractISlasherCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContractISlasher.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 (_ContractISlasher *ContractISlasherTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContractISlasher.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ContractISlasher *ContractISlasherTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContractISlasher.Contract.contract.Transact(opts, method, params...) -} - -// CanSlash is a free data retrieval call binding the contract method 0xd98128c0. -// -// Solidity: function canSlash(address toBeSlashed, address slashingContract) view returns(bool) -func (_ContractISlasher *ContractISlasherCaller) CanSlash(opts *bind.CallOpts, toBeSlashed common.Address, slashingContract common.Address) (bool, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "canSlash", toBeSlashed, slashingContract) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// CanSlash is a free data retrieval call binding the contract method 0xd98128c0. -// -// Solidity: function canSlash(address toBeSlashed, address slashingContract) view returns(bool) -func (_ContractISlasher *ContractISlasherSession) CanSlash(toBeSlashed common.Address, slashingContract common.Address) (bool, error) { - return _ContractISlasher.Contract.CanSlash(&_ContractISlasher.CallOpts, toBeSlashed, slashingContract) -} - -// CanSlash is a free data retrieval call binding the contract method 0xd98128c0. -// -// Solidity: function canSlash(address toBeSlashed, address slashingContract) view returns(bool) -func (_ContractISlasher *ContractISlasherCallerSession) CanSlash(toBeSlashed common.Address, slashingContract common.Address) (bool, error) { - return _ContractISlasher.Contract.CanSlash(&_ContractISlasher.CallOpts, toBeSlashed, slashingContract) -} - -// ContractCanSlashOperatorUntilBlock is a free data retrieval call binding the contract method 0x6f0c2f74. -// -// Solidity: function contractCanSlashOperatorUntilBlock(address operator, address serviceContract) view returns(uint32) -func (_ContractISlasher *ContractISlasherCaller) ContractCanSlashOperatorUntilBlock(opts *bind.CallOpts, operator common.Address, serviceContract common.Address) (uint32, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "contractCanSlashOperatorUntilBlock", operator, serviceContract) - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ContractCanSlashOperatorUntilBlock is a free data retrieval call binding the contract method 0x6f0c2f74. -// -// Solidity: function contractCanSlashOperatorUntilBlock(address operator, address serviceContract) view returns(uint32) -func (_ContractISlasher *ContractISlasherSession) ContractCanSlashOperatorUntilBlock(operator common.Address, serviceContract common.Address) (uint32, error) { - return _ContractISlasher.Contract.ContractCanSlashOperatorUntilBlock(&_ContractISlasher.CallOpts, operator, serviceContract) -} - -// ContractCanSlashOperatorUntilBlock is a free data retrieval call binding the contract method 0x6f0c2f74. -// -// Solidity: function contractCanSlashOperatorUntilBlock(address operator, address serviceContract) view returns(uint32) -func (_ContractISlasher *ContractISlasherCallerSession) ContractCanSlashOperatorUntilBlock(operator common.Address, serviceContract common.Address) (uint32, error) { - return _ContractISlasher.Contract.ContractCanSlashOperatorUntilBlock(&_ContractISlasher.CallOpts, operator, serviceContract) -} - -// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. -// -// Solidity: function delegation() view returns(address) -func (_ContractISlasher *ContractISlasherCaller) Delegation(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "delegation") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. -// -// Solidity: function delegation() view returns(address) -func (_ContractISlasher *ContractISlasherSession) Delegation() (common.Address, error) { - return _ContractISlasher.Contract.Delegation(&_ContractISlasher.CallOpts) -} - -// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. -// -// Solidity: function delegation() view returns(address) -func (_ContractISlasher *ContractISlasherCallerSession) Delegation() (common.Address, error) { - return _ContractISlasher.Contract.Delegation(&_ContractISlasher.CallOpts) -} - -// GetCorrectValueForInsertAfter is a free data retrieval call binding the contract method 0x723e59c7. -// -// Solidity: function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) view returns(uint256) -func (_ContractISlasher *ContractISlasherCaller) GetCorrectValueForInsertAfter(opts *bind.CallOpts, operator common.Address, updateBlock uint32) (*big.Int, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "getCorrectValueForInsertAfter", operator, updateBlock) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetCorrectValueForInsertAfter is a free data retrieval call binding the contract method 0x723e59c7. -// -// Solidity: function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) view returns(uint256) -func (_ContractISlasher *ContractISlasherSession) GetCorrectValueForInsertAfter(operator common.Address, updateBlock uint32) (*big.Int, error) { - return _ContractISlasher.Contract.GetCorrectValueForInsertAfter(&_ContractISlasher.CallOpts, operator, updateBlock) -} - -// GetCorrectValueForInsertAfter is a free data retrieval call binding the contract method 0x723e59c7. -// -// Solidity: function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) view returns(uint256) -func (_ContractISlasher *ContractISlasherCallerSession) GetCorrectValueForInsertAfter(operator common.Address, updateBlock uint32) (*big.Int, error) { - return _ContractISlasher.Contract.GetCorrectValueForInsertAfter(&_ContractISlasher.CallOpts, operator, updateBlock) -} - -// GetMiddlewareTimesIndexServeUntilBlock is a free data retrieval call binding the contract method 0x7259a45c. -// -// Solidity: function getMiddlewareTimesIndexServeUntilBlock(address operator, uint32 index) view returns(uint32) -func (_ContractISlasher *ContractISlasherCaller) GetMiddlewareTimesIndexServeUntilBlock(opts *bind.CallOpts, operator common.Address, index uint32) (uint32, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "getMiddlewareTimesIndexServeUntilBlock", operator, index) - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// GetMiddlewareTimesIndexServeUntilBlock is a free data retrieval call binding the contract method 0x7259a45c. -// -// Solidity: function getMiddlewareTimesIndexServeUntilBlock(address operator, uint32 index) view returns(uint32) -func (_ContractISlasher *ContractISlasherSession) GetMiddlewareTimesIndexServeUntilBlock(operator common.Address, index uint32) (uint32, error) { - return _ContractISlasher.Contract.GetMiddlewareTimesIndexServeUntilBlock(&_ContractISlasher.CallOpts, operator, index) -} - -// GetMiddlewareTimesIndexServeUntilBlock is a free data retrieval call binding the contract method 0x7259a45c. -// -// Solidity: function getMiddlewareTimesIndexServeUntilBlock(address operator, uint32 index) view returns(uint32) -func (_ContractISlasher *ContractISlasherCallerSession) GetMiddlewareTimesIndexServeUntilBlock(operator common.Address, index uint32) (uint32, error) { - return _ContractISlasher.Contract.GetMiddlewareTimesIndexServeUntilBlock(&_ContractISlasher.CallOpts, operator, index) -} - -// GetMiddlewareTimesIndexStalestUpdateBlock is a free data retrieval call binding the contract method 0x1874e5ae. -// -// Solidity: function getMiddlewareTimesIndexStalestUpdateBlock(address operator, uint32 index) view returns(uint32) -func (_ContractISlasher *ContractISlasherCaller) GetMiddlewareTimesIndexStalestUpdateBlock(opts *bind.CallOpts, operator common.Address, index uint32) (uint32, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "getMiddlewareTimesIndexStalestUpdateBlock", operator, index) - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// GetMiddlewareTimesIndexStalestUpdateBlock is a free data retrieval call binding the contract method 0x1874e5ae. -// -// Solidity: function getMiddlewareTimesIndexStalestUpdateBlock(address operator, uint32 index) view returns(uint32) -func (_ContractISlasher *ContractISlasherSession) GetMiddlewareTimesIndexStalestUpdateBlock(operator common.Address, index uint32) (uint32, error) { - return _ContractISlasher.Contract.GetMiddlewareTimesIndexStalestUpdateBlock(&_ContractISlasher.CallOpts, operator, index) -} - -// GetMiddlewareTimesIndexStalestUpdateBlock is a free data retrieval call binding the contract method 0x1874e5ae. -// -// Solidity: function getMiddlewareTimesIndexStalestUpdateBlock(address operator, uint32 index) view returns(uint32) -func (_ContractISlasher *ContractISlasherCallerSession) GetMiddlewareTimesIndexStalestUpdateBlock(operator common.Address, index uint32) (uint32, error) { - return _ContractISlasher.Contract.GetMiddlewareTimesIndexStalestUpdateBlock(&_ContractISlasher.CallOpts, operator, index) -} - -// IsFrozen is a free data retrieval call binding the contract method 0xe5839836. -// -// Solidity: function isFrozen(address staker) view returns(bool) -func (_ContractISlasher *ContractISlasherCaller) IsFrozen(opts *bind.CallOpts, staker common.Address) (bool, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "isFrozen", staker) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsFrozen is a free data retrieval call binding the contract method 0xe5839836. -// -// Solidity: function isFrozen(address staker) view returns(bool) -func (_ContractISlasher *ContractISlasherSession) IsFrozen(staker common.Address) (bool, error) { - return _ContractISlasher.Contract.IsFrozen(&_ContractISlasher.CallOpts, staker) -} - -// IsFrozen is a free data retrieval call binding the contract method 0xe5839836. -// -// Solidity: function isFrozen(address staker) view returns(bool) -func (_ContractISlasher *ContractISlasherCallerSession) IsFrozen(staker common.Address) (bool, error) { - return _ContractISlasher.Contract.IsFrozen(&_ContractISlasher.CallOpts, staker) -} - -// LatestUpdateBlock is a free data retrieval call binding the contract method 0xda16e29b. -// -// Solidity: function latestUpdateBlock(address operator, address serviceContract) view returns(uint32) -func (_ContractISlasher *ContractISlasherCaller) LatestUpdateBlock(opts *bind.CallOpts, operator common.Address, serviceContract common.Address) (uint32, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "latestUpdateBlock", operator, serviceContract) - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// LatestUpdateBlock is a free data retrieval call binding the contract method 0xda16e29b. -// -// Solidity: function latestUpdateBlock(address operator, address serviceContract) view returns(uint32) -func (_ContractISlasher *ContractISlasherSession) LatestUpdateBlock(operator common.Address, serviceContract common.Address) (uint32, error) { - return _ContractISlasher.Contract.LatestUpdateBlock(&_ContractISlasher.CallOpts, operator, serviceContract) -} - -// LatestUpdateBlock is a free data retrieval call binding the contract method 0xda16e29b. -// -// Solidity: function latestUpdateBlock(address operator, address serviceContract) view returns(uint32) -func (_ContractISlasher *ContractISlasherCallerSession) LatestUpdateBlock(operator common.Address, serviceContract common.Address) (uint32, error) { - return _ContractISlasher.Contract.LatestUpdateBlock(&_ContractISlasher.CallOpts, operator, serviceContract) -} - -// MiddlewareTimesLength is a free data retrieval call binding the contract method 0xa49db732. -// -// Solidity: function middlewareTimesLength(address operator) view returns(uint256) -func (_ContractISlasher *ContractISlasherCaller) MiddlewareTimesLength(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "middlewareTimesLength", operator) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MiddlewareTimesLength is a free data retrieval call binding the contract method 0xa49db732. -// -// Solidity: function middlewareTimesLength(address operator) view returns(uint256) -func (_ContractISlasher *ContractISlasherSession) MiddlewareTimesLength(operator common.Address) (*big.Int, error) { - return _ContractISlasher.Contract.MiddlewareTimesLength(&_ContractISlasher.CallOpts, operator) -} - -// MiddlewareTimesLength is a free data retrieval call binding the contract method 0xa49db732. -// -// Solidity: function middlewareTimesLength(address operator) view returns(uint256) -func (_ContractISlasher *ContractISlasherCallerSession) MiddlewareTimesLength(operator common.Address) (*big.Int, error) { - return _ContractISlasher.Contract.MiddlewareTimesLength(&_ContractISlasher.CallOpts, operator) -} - -// OperatorToMiddlewareTimes is a free data retrieval call binding the contract method 0x282670fc. -// -// Solidity: function operatorToMiddlewareTimes(address operator, uint256 arrayIndex) view returns((uint32,uint32)) -func (_ContractISlasher *ContractISlasherCaller) OperatorToMiddlewareTimes(opts *bind.CallOpts, operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "operatorToMiddlewareTimes", operator, arrayIndex) - - if err != nil { - return *new(ISlasherMiddlewareTimes), err - } - - out0 := *abi.ConvertType(out[0], new(ISlasherMiddlewareTimes)).(*ISlasherMiddlewareTimes) - - return out0, err - -} - -// OperatorToMiddlewareTimes is a free data retrieval call binding the contract method 0x282670fc. -// -// Solidity: function operatorToMiddlewareTimes(address operator, uint256 arrayIndex) view returns((uint32,uint32)) -func (_ContractISlasher *ContractISlasherSession) OperatorToMiddlewareTimes(operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) { - return _ContractISlasher.Contract.OperatorToMiddlewareTimes(&_ContractISlasher.CallOpts, operator, arrayIndex) -} - -// OperatorToMiddlewareTimes is a free data retrieval call binding the contract method 0x282670fc. -// -// Solidity: function operatorToMiddlewareTimes(address operator, uint256 arrayIndex) view returns((uint32,uint32)) -func (_ContractISlasher *ContractISlasherCallerSession) OperatorToMiddlewareTimes(operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) { - return _ContractISlasher.Contract.OperatorToMiddlewareTimes(&_ContractISlasher.CallOpts, operator, arrayIndex) -} - -// OperatorWhitelistedContractsLinkedListEntry is a free data retrieval call binding the contract method 0x855fcc4a. -// -// Solidity: function operatorWhitelistedContractsLinkedListEntry(address operator, address node) view returns(bool, uint256, uint256) -func (_ContractISlasher *ContractISlasherCaller) OperatorWhitelistedContractsLinkedListEntry(opts *bind.CallOpts, operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "operatorWhitelistedContractsLinkedListEntry", operator, node) - - if err != nil { - return *new(bool), *new(*big.Int), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - out2 := *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - - return out0, out1, out2, err - -} - -// OperatorWhitelistedContractsLinkedListEntry is a free data retrieval call binding the contract method 0x855fcc4a. -// -// Solidity: function operatorWhitelistedContractsLinkedListEntry(address operator, address node) view returns(bool, uint256, uint256) -func (_ContractISlasher *ContractISlasherSession) OperatorWhitelistedContractsLinkedListEntry(operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) { - return _ContractISlasher.Contract.OperatorWhitelistedContractsLinkedListEntry(&_ContractISlasher.CallOpts, operator, node) -} - -// OperatorWhitelistedContractsLinkedListEntry is a free data retrieval call binding the contract method 0x855fcc4a. -// -// Solidity: function operatorWhitelistedContractsLinkedListEntry(address operator, address node) view returns(bool, uint256, uint256) -func (_ContractISlasher *ContractISlasherCallerSession) OperatorWhitelistedContractsLinkedListEntry(operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) { - return _ContractISlasher.Contract.OperatorWhitelistedContractsLinkedListEntry(&_ContractISlasher.CallOpts, operator, node) -} - -// OperatorWhitelistedContractsLinkedListSize is a free data retrieval call binding the contract method 0xe921d4fa. -// -// Solidity: function operatorWhitelistedContractsLinkedListSize(address operator) view returns(uint256) -func (_ContractISlasher *ContractISlasherCaller) OperatorWhitelistedContractsLinkedListSize(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "operatorWhitelistedContractsLinkedListSize", operator) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// OperatorWhitelistedContractsLinkedListSize is a free data retrieval call binding the contract method 0xe921d4fa. -// -// Solidity: function operatorWhitelistedContractsLinkedListSize(address operator) view returns(uint256) -func (_ContractISlasher *ContractISlasherSession) OperatorWhitelistedContractsLinkedListSize(operator common.Address) (*big.Int, error) { - return _ContractISlasher.Contract.OperatorWhitelistedContractsLinkedListSize(&_ContractISlasher.CallOpts, operator) -} - -// OperatorWhitelistedContractsLinkedListSize is a free data retrieval call binding the contract method 0xe921d4fa. -// -// Solidity: function operatorWhitelistedContractsLinkedListSize(address operator) view returns(uint256) -func (_ContractISlasher *ContractISlasherCallerSession) OperatorWhitelistedContractsLinkedListSize(operator common.Address) (*big.Int, error) { - return _ContractISlasher.Contract.OperatorWhitelistedContractsLinkedListSize(&_ContractISlasher.CallOpts, operator) -} - -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. -// -// Solidity: function strategyManager() view returns(address) -func (_ContractISlasher *ContractISlasherCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ContractISlasher.contract.Call(opts, &out, "strategyManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. -// -// Solidity: function strategyManager() view returns(address) -func (_ContractISlasher *ContractISlasherSession) StrategyManager() (common.Address, error) { - return _ContractISlasher.Contract.StrategyManager(&_ContractISlasher.CallOpts) -} - -// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. -// -// Solidity: function strategyManager() view returns(address) -func (_ContractISlasher *ContractISlasherCallerSession) StrategyManager() (common.Address, error) { - return _ContractISlasher.Contract.StrategyManager(&_ContractISlasher.CallOpts) -} - -// CanWithdraw is a paid mutator transaction binding the contract method 0x8105e043. -// -// Solidity: function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) returns(bool) -func (_ContractISlasher *ContractISlasherTransactor) CanWithdraw(opts *bind.TransactOpts, operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "canWithdraw", operator, withdrawalStartBlock, middlewareTimesIndex) -} - -// CanWithdraw is a paid mutator transaction binding the contract method 0x8105e043. -// -// Solidity: function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) returns(bool) -func (_ContractISlasher *ContractISlasherSession) CanWithdraw(operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) { - return _ContractISlasher.Contract.CanWithdraw(&_ContractISlasher.TransactOpts, operator, withdrawalStartBlock, middlewareTimesIndex) -} - -// CanWithdraw is a paid mutator transaction binding the contract method 0x8105e043. -// -// Solidity: function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) returns(bool) -func (_ContractISlasher *ContractISlasherTransactorSession) CanWithdraw(operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) { - return _ContractISlasher.Contract.CanWithdraw(&_ContractISlasher.TransactOpts, operator, withdrawalStartBlock, middlewareTimesIndex) -} - -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. -// -// Solidity: function freezeOperator(address toBeFrozen) returns() -func (_ContractISlasher *ContractISlasherTransactor) FreezeOperator(opts *bind.TransactOpts, toBeFrozen common.Address) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "freezeOperator", toBeFrozen) -} - -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. -// -// Solidity: function freezeOperator(address toBeFrozen) returns() -func (_ContractISlasher *ContractISlasherSession) FreezeOperator(toBeFrozen common.Address) (*types.Transaction, error) { - return _ContractISlasher.Contract.FreezeOperator(&_ContractISlasher.TransactOpts, toBeFrozen) -} - -// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64. -// -// Solidity: function freezeOperator(address toBeFrozen) returns() -func (_ContractISlasher *ContractISlasherTransactorSession) FreezeOperator(toBeFrozen common.Address) (*types.Transaction, error) { - return _ContractISlasher.Contract.FreezeOperator(&_ContractISlasher.TransactOpts, toBeFrozen) -} - -// OptIntoSlashing is a paid mutator transaction binding the contract method 0xf73b7519. -// -// Solidity: function optIntoSlashing(address contractAddress) returns() -func (_ContractISlasher *ContractISlasherTransactor) OptIntoSlashing(opts *bind.TransactOpts, contractAddress common.Address) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "optIntoSlashing", contractAddress) -} - -// OptIntoSlashing is a paid mutator transaction binding the contract method 0xf73b7519. -// -// Solidity: function optIntoSlashing(address contractAddress) returns() -func (_ContractISlasher *ContractISlasherSession) OptIntoSlashing(contractAddress common.Address) (*types.Transaction, error) { - return _ContractISlasher.Contract.OptIntoSlashing(&_ContractISlasher.TransactOpts, contractAddress) -} - -// OptIntoSlashing is a paid mutator transaction binding the contract method 0xf73b7519. -// -// Solidity: function optIntoSlashing(address contractAddress) returns() -func (_ContractISlasher *ContractISlasherTransactorSession) OptIntoSlashing(contractAddress common.Address) (*types.Transaction, error) { - return _ContractISlasher.Contract.OptIntoSlashing(&_ContractISlasher.TransactOpts, contractAddress) -} - -// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205. -// -// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns() -func (_ContractISlasher *ContractISlasherTransactor) RecordFirstStakeUpdate(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "recordFirstStakeUpdate", operator, serveUntilBlock) -} - -// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205. -// -// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns() -func (_ContractISlasher *ContractISlasherSession) RecordFirstStakeUpdate(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractISlasher.Contract.RecordFirstStakeUpdate(&_ContractISlasher.TransactOpts, operator, serveUntilBlock) -} - -// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205. -// -// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns() -func (_ContractISlasher *ContractISlasherTransactorSession) RecordFirstStakeUpdate(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractISlasher.Contract.RecordFirstStakeUpdate(&_ContractISlasher.TransactOpts, operator, serveUntilBlock) -} - -// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce. -// -// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns() -func (_ContractISlasher *ContractISlasherTransactor) RecordLastStakeUpdateAndRevokeSlashingAbility(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "recordLastStakeUpdateAndRevokeSlashingAbility", operator, serveUntilBlock) -} - -// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce. -// -// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns() -func (_ContractISlasher *ContractISlasherSession) RecordLastStakeUpdateAndRevokeSlashingAbility(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractISlasher.Contract.RecordLastStakeUpdateAndRevokeSlashingAbility(&_ContractISlasher.TransactOpts, operator, serveUntilBlock) -} - -// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce. -// -// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns() -func (_ContractISlasher *ContractISlasherTransactorSession) RecordLastStakeUpdateAndRevokeSlashingAbility(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) { - return _ContractISlasher.Contract.RecordLastStakeUpdateAndRevokeSlashingAbility(&_ContractISlasher.TransactOpts, operator, serveUntilBlock) -} - -// RecordStakeUpdate is a paid mutator transaction binding the contract method 0xc747075b. -// -// Solidity: function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 insertAfter) returns() -func (_ContractISlasher *ContractISlasherTransactor) RecordStakeUpdate(opts *bind.TransactOpts, operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "recordStakeUpdate", operator, updateBlock, serveUntilBlock, insertAfter) -} - -// RecordStakeUpdate is a paid mutator transaction binding the contract method 0xc747075b. -// -// Solidity: function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 insertAfter) returns() -func (_ContractISlasher *ContractISlasherSession) RecordStakeUpdate(operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) { - return _ContractISlasher.Contract.RecordStakeUpdate(&_ContractISlasher.TransactOpts, operator, updateBlock, serveUntilBlock, insertAfter) -} - -// RecordStakeUpdate is a paid mutator transaction binding the contract method 0xc747075b. -// -// Solidity: function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 insertAfter) returns() -func (_ContractISlasher *ContractISlasherTransactorSession) RecordStakeUpdate(operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) { - return _ContractISlasher.Contract.RecordStakeUpdate(&_ContractISlasher.TransactOpts, operator, updateBlock, serveUntilBlock, insertAfter) -} - -// ResetFrozenStatus is a paid mutator transaction binding the contract method 0x7cf72bba. -// -// Solidity: function resetFrozenStatus(address[] frozenAddresses) returns() -func (_ContractISlasher *ContractISlasherTransactor) ResetFrozenStatus(opts *bind.TransactOpts, frozenAddresses []common.Address) (*types.Transaction, error) { - return _ContractISlasher.contract.Transact(opts, "resetFrozenStatus", frozenAddresses) -} - -// ResetFrozenStatus is a paid mutator transaction binding the contract method 0x7cf72bba. -// -// Solidity: function resetFrozenStatus(address[] frozenAddresses) returns() -func (_ContractISlasher *ContractISlasherSession) ResetFrozenStatus(frozenAddresses []common.Address) (*types.Transaction, error) { - return _ContractISlasher.Contract.ResetFrozenStatus(&_ContractISlasher.TransactOpts, frozenAddresses) -} - -// ResetFrozenStatus is a paid mutator transaction binding the contract method 0x7cf72bba. -// -// Solidity: function resetFrozenStatus(address[] frozenAddresses) returns() -func (_ContractISlasher *ContractISlasherTransactorSession) ResetFrozenStatus(frozenAddresses []common.Address) (*types.Transaction, error) { - return _ContractISlasher.Contract.ResetFrozenStatus(&_ContractISlasher.TransactOpts, frozenAddresses) -} - -// ContractISlasherFrozenStatusResetIterator is returned from FilterFrozenStatusReset and is used to iterate over the raw logs and unpacked data for FrozenStatusReset events raised by the ContractISlasher contract. -type ContractISlasherFrozenStatusResetIterator struct { - Event *ContractISlasherFrozenStatusReset // 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 *ContractISlasherFrozenStatusResetIterator) 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(ContractISlasherFrozenStatusReset) - 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(ContractISlasherFrozenStatusReset) - 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 *ContractISlasherFrozenStatusResetIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractISlasherFrozenStatusResetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractISlasherFrozenStatusReset represents a FrozenStatusReset event raised by the ContractISlasher contract. -type ContractISlasherFrozenStatusReset struct { - PreviouslySlashedAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFrozenStatusReset is a free log retrieval operation binding the contract event 0xd4cef0af27800d466fcacd85779857378b85cb61569005ff1464fa6e5ced69d8. -// -// Solidity: event FrozenStatusReset(address indexed previouslySlashedAddress) -func (_ContractISlasher *ContractISlasherFilterer) FilterFrozenStatusReset(opts *bind.FilterOpts, previouslySlashedAddress []common.Address) (*ContractISlasherFrozenStatusResetIterator, error) { - - var previouslySlashedAddressRule []interface{} - for _, previouslySlashedAddressItem := range previouslySlashedAddress { - previouslySlashedAddressRule = append(previouslySlashedAddressRule, previouslySlashedAddressItem) - } - - logs, sub, err := _ContractISlasher.contract.FilterLogs(opts, "FrozenStatusReset", previouslySlashedAddressRule) - if err != nil { - return nil, err - } - return &ContractISlasherFrozenStatusResetIterator{contract: _ContractISlasher.contract, event: "FrozenStatusReset", logs: logs, sub: sub}, nil -} - -// WatchFrozenStatusReset is a free log subscription operation binding the contract event 0xd4cef0af27800d466fcacd85779857378b85cb61569005ff1464fa6e5ced69d8. -// -// Solidity: event FrozenStatusReset(address indexed previouslySlashedAddress) -func (_ContractISlasher *ContractISlasherFilterer) WatchFrozenStatusReset(opts *bind.WatchOpts, sink chan<- *ContractISlasherFrozenStatusReset, previouslySlashedAddress []common.Address) (event.Subscription, error) { - - var previouslySlashedAddressRule []interface{} - for _, previouslySlashedAddressItem := range previouslySlashedAddress { - previouslySlashedAddressRule = append(previouslySlashedAddressRule, previouslySlashedAddressItem) - } - - logs, sub, err := _ContractISlasher.contract.WatchLogs(opts, "FrozenStatusReset", previouslySlashedAddressRule) - 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(ContractISlasherFrozenStatusReset) - if err := _ContractISlasher.contract.UnpackLog(event, "FrozenStatusReset", 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 -} - -// ParseFrozenStatusReset is a log parse operation binding the contract event 0xd4cef0af27800d466fcacd85779857378b85cb61569005ff1464fa6e5ced69d8. -// -// Solidity: event FrozenStatusReset(address indexed previouslySlashedAddress) -func (_ContractISlasher *ContractISlasherFilterer) ParseFrozenStatusReset(log types.Log) (*ContractISlasherFrozenStatusReset, error) { - event := new(ContractISlasherFrozenStatusReset) - if err := _ContractISlasher.contract.UnpackLog(event, "FrozenStatusReset", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractISlasherMiddlewareTimesAddedIterator is returned from FilterMiddlewareTimesAdded and is used to iterate over the raw logs and unpacked data for MiddlewareTimesAdded events raised by the ContractISlasher contract. -type ContractISlasherMiddlewareTimesAddedIterator struct { - Event *ContractISlasherMiddlewareTimesAdded // 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 *ContractISlasherMiddlewareTimesAddedIterator) 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(ContractISlasherMiddlewareTimesAdded) - 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(ContractISlasherMiddlewareTimesAdded) - 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 *ContractISlasherMiddlewareTimesAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractISlasherMiddlewareTimesAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractISlasherMiddlewareTimesAdded represents a MiddlewareTimesAdded event raised by the ContractISlasher contract. -type ContractISlasherMiddlewareTimesAdded struct { - Operator common.Address - Index *big.Int - StalestUpdateBlock uint32 - LatestServeUntilBlock uint32 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMiddlewareTimesAdded is a free log retrieval operation binding the contract event 0x1b62ba64c72d01e41a2b8c46e6aeeff728ef3a4438cf1cac3d92ee12189d5649. -// -// Solidity: event MiddlewareTimesAdded(address operator, uint256 index, uint32 stalestUpdateBlock, uint32 latestServeUntilBlock) -func (_ContractISlasher *ContractISlasherFilterer) FilterMiddlewareTimesAdded(opts *bind.FilterOpts) (*ContractISlasherMiddlewareTimesAddedIterator, error) { - - logs, sub, err := _ContractISlasher.contract.FilterLogs(opts, "MiddlewareTimesAdded") - if err != nil { - return nil, err - } - return &ContractISlasherMiddlewareTimesAddedIterator{contract: _ContractISlasher.contract, event: "MiddlewareTimesAdded", logs: logs, sub: sub}, nil -} - -// WatchMiddlewareTimesAdded is a free log subscription operation binding the contract event 0x1b62ba64c72d01e41a2b8c46e6aeeff728ef3a4438cf1cac3d92ee12189d5649. -// -// Solidity: event MiddlewareTimesAdded(address operator, uint256 index, uint32 stalestUpdateBlock, uint32 latestServeUntilBlock) -func (_ContractISlasher *ContractISlasherFilterer) WatchMiddlewareTimesAdded(opts *bind.WatchOpts, sink chan<- *ContractISlasherMiddlewareTimesAdded) (event.Subscription, error) { - - logs, sub, err := _ContractISlasher.contract.WatchLogs(opts, "MiddlewareTimesAdded") - 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(ContractISlasherMiddlewareTimesAdded) - if err := _ContractISlasher.contract.UnpackLog(event, "MiddlewareTimesAdded", 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 -} - -// ParseMiddlewareTimesAdded is a log parse operation binding the contract event 0x1b62ba64c72d01e41a2b8c46e6aeeff728ef3a4438cf1cac3d92ee12189d5649. -// -// Solidity: event MiddlewareTimesAdded(address operator, uint256 index, uint32 stalestUpdateBlock, uint32 latestServeUntilBlock) -func (_ContractISlasher *ContractISlasherFilterer) ParseMiddlewareTimesAdded(log types.Log) (*ContractISlasherMiddlewareTimesAdded, error) { - event := new(ContractISlasherMiddlewareTimesAdded) - if err := _ContractISlasher.contract.UnpackLog(event, "MiddlewareTimesAdded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractISlasherOperatorFrozenIterator is returned from FilterOperatorFrozen and is used to iterate over the raw logs and unpacked data for OperatorFrozen events raised by the ContractISlasher contract. -type ContractISlasherOperatorFrozenIterator struct { - Event *ContractISlasherOperatorFrozen // 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 *ContractISlasherOperatorFrozenIterator) 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(ContractISlasherOperatorFrozen) - 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(ContractISlasherOperatorFrozen) - 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 *ContractISlasherOperatorFrozenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractISlasherOperatorFrozenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractISlasherOperatorFrozen represents a OperatorFrozen event raised by the ContractISlasher contract. -type ContractISlasherOperatorFrozen struct { - SlashedOperator common.Address - SlashingContract common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOperatorFrozen is a free log retrieval operation binding the contract event 0x444a84f512816ae7be8ed8a66aa88e362eb54d0988e83acc9d81746622b3ba51. -// -// Solidity: event OperatorFrozen(address indexed slashedOperator, address indexed slashingContract) -func (_ContractISlasher *ContractISlasherFilterer) FilterOperatorFrozen(opts *bind.FilterOpts, slashedOperator []common.Address, slashingContract []common.Address) (*ContractISlasherOperatorFrozenIterator, error) { - - var slashedOperatorRule []interface{} - for _, slashedOperatorItem := range slashedOperator { - slashedOperatorRule = append(slashedOperatorRule, slashedOperatorItem) - } - var slashingContractRule []interface{} - for _, slashingContractItem := range slashingContract { - slashingContractRule = append(slashingContractRule, slashingContractItem) - } - - logs, sub, err := _ContractISlasher.contract.FilterLogs(opts, "OperatorFrozen", slashedOperatorRule, slashingContractRule) - if err != nil { - return nil, err - } - return &ContractISlasherOperatorFrozenIterator{contract: _ContractISlasher.contract, event: "OperatorFrozen", logs: logs, sub: sub}, nil -} - -// WatchOperatorFrozen is a free log subscription operation binding the contract event 0x444a84f512816ae7be8ed8a66aa88e362eb54d0988e83acc9d81746622b3ba51. -// -// Solidity: event OperatorFrozen(address indexed slashedOperator, address indexed slashingContract) -func (_ContractISlasher *ContractISlasherFilterer) WatchOperatorFrozen(opts *bind.WatchOpts, sink chan<- *ContractISlasherOperatorFrozen, slashedOperator []common.Address, slashingContract []common.Address) (event.Subscription, error) { - - var slashedOperatorRule []interface{} - for _, slashedOperatorItem := range slashedOperator { - slashedOperatorRule = append(slashedOperatorRule, slashedOperatorItem) - } - var slashingContractRule []interface{} - for _, slashingContractItem := range slashingContract { - slashingContractRule = append(slashingContractRule, slashingContractItem) - } - - logs, sub, err := _ContractISlasher.contract.WatchLogs(opts, "OperatorFrozen", slashedOperatorRule, slashingContractRule) - 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(ContractISlasherOperatorFrozen) - if err := _ContractISlasher.contract.UnpackLog(event, "OperatorFrozen", 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 -} - -// ParseOperatorFrozen is a log parse operation binding the contract event 0x444a84f512816ae7be8ed8a66aa88e362eb54d0988e83acc9d81746622b3ba51. -// -// Solidity: event OperatorFrozen(address indexed slashedOperator, address indexed slashingContract) -func (_ContractISlasher *ContractISlasherFilterer) ParseOperatorFrozen(log types.Log) (*ContractISlasherOperatorFrozen, error) { - event := new(ContractISlasherOperatorFrozen) - if err := _ContractISlasher.contract.UnpackLog(event, "OperatorFrozen", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractISlasherOptedIntoSlashingIterator is returned from FilterOptedIntoSlashing and is used to iterate over the raw logs and unpacked data for OptedIntoSlashing events raised by the ContractISlasher contract. -type ContractISlasherOptedIntoSlashingIterator struct { - Event *ContractISlasherOptedIntoSlashing // 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 *ContractISlasherOptedIntoSlashingIterator) 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(ContractISlasherOptedIntoSlashing) - 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(ContractISlasherOptedIntoSlashing) - 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 *ContractISlasherOptedIntoSlashingIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractISlasherOptedIntoSlashingIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractISlasherOptedIntoSlashing represents a OptedIntoSlashing event raised by the ContractISlasher contract. -type ContractISlasherOptedIntoSlashing struct { - Operator common.Address - ContractAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOptedIntoSlashing is a free log retrieval operation binding the contract event 0xefa9fb38e813d53c15edf501e03852843a3fed691960523391d71a092b3627d8. -// -// Solidity: event OptedIntoSlashing(address indexed operator, address indexed contractAddress) -func (_ContractISlasher *ContractISlasherFilterer) FilterOptedIntoSlashing(opts *bind.FilterOpts, operator []common.Address, contractAddress []common.Address) (*ContractISlasherOptedIntoSlashingIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var contractAddressRule []interface{} - for _, contractAddressItem := range contractAddress { - contractAddressRule = append(contractAddressRule, contractAddressItem) - } - - logs, sub, err := _ContractISlasher.contract.FilterLogs(opts, "OptedIntoSlashing", operatorRule, contractAddressRule) - if err != nil { - return nil, err - } - return &ContractISlasherOptedIntoSlashingIterator{contract: _ContractISlasher.contract, event: "OptedIntoSlashing", logs: logs, sub: sub}, nil -} - -// WatchOptedIntoSlashing is a free log subscription operation binding the contract event 0xefa9fb38e813d53c15edf501e03852843a3fed691960523391d71a092b3627d8. -// -// Solidity: event OptedIntoSlashing(address indexed operator, address indexed contractAddress) -func (_ContractISlasher *ContractISlasherFilterer) WatchOptedIntoSlashing(opts *bind.WatchOpts, sink chan<- *ContractISlasherOptedIntoSlashing, operator []common.Address, contractAddress []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var contractAddressRule []interface{} - for _, contractAddressItem := range contractAddress { - contractAddressRule = append(contractAddressRule, contractAddressItem) - } - - logs, sub, err := _ContractISlasher.contract.WatchLogs(opts, "OptedIntoSlashing", operatorRule, contractAddressRule) - 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(ContractISlasherOptedIntoSlashing) - if err := _ContractISlasher.contract.UnpackLog(event, "OptedIntoSlashing", 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 -} - -// ParseOptedIntoSlashing is a log parse operation binding the contract event 0xefa9fb38e813d53c15edf501e03852843a3fed691960523391d71a092b3627d8. -// -// Solidity: event OptedIntoSlashing(address indexed operator, address indexed contractAddress) -func (_ContractISlasher *ContractISlasherFilterer) ParseOptedIntoSlashing(log types.Log) (*ContractISlasherOptedIntoSlashing, error) { - event := new(ContractISlasherOptedIntoSlashing) - if err := _ContractISlasher.contract.UnpackLog(event, "OptedIntoSlashing", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ContractISlasherSlashingAbilityRevokedIterator is returned from FilterSlashingAbilityRevoked and is used to iterate over the raw logs and unpacked data for SlashingAbilityRevoked events raised by the ContractISlasher contract. -type ContractISlasherSlashingAbilityRevokedIterator struct { - Event *ContractISlasherSlashingAbilityRevoked // 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 *ContractISlasherSlashingAbilityRevokedIterator) 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(ContractISlasherSlashingAbilityRevoked) - 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(ContractISlasherSlashingAbilityRevoked) - 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 *ContractISlasherSlashingAbilityRevokedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractISlasherSlashingAbilityRevokedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractISlasherSlashingAbilityRevoked represents a SlashingAbilityRevoked event raised by the ContractISlasher contract. -type ContractISlasherSlashingAbilityRevoked struct { - Operator common.Address - ContractAddress common.Address - ContractCanSlashOperatorUntilBlock uint32 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSlashingAbilityRevoked is a free log retrieval operation binding the contract event 0x9aa1b1391f35c672ed1f3b7ece632f4513e618366bef7a2f67b7c6bc1f2d2b14. -// -// Solidity: event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock) -func (_ContractISlasher *ContractISlasherFilterer) FilterSlashingAbilityRevoked(opts *bind.FilterOpts, operator []common.Address, contractAddress []common.Address) (*ContractISlasherSlashingAbilityRevokedIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var contractAddressRule []interface{} - for _, contractAddressItem := range contractAddress { - contractAddressRule = append(contractAddressRule, contractAddressItem) - } - - logs, sub, err := _ContractISlasher.contract.FilterLogs(opts, "SlashingAbilityRevoked", operatorRule, contractAddressRule) - if err != nil { - return nil, err - } - return &ContractISlasherSlashingAbilityRevokedIterator{contract: _ContractISlasher.contract, event: "SlashingAbilityRevoked", logs: logs, sub: sub}, nil -} - -// WatchSlashingAbilityRevoked is a free log subscription operation binding the contract event 0x9aa1b1391f35c672ed1f3b7ece632f4513e618366bef7a2f67b7c6bc1f2d2b14. -// -// Solidity: event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock) -func (_ContractISlasher *ContractISlasherFilterer) WatchSlashingAbilityRevoked(opts *bind.WatchOpts, sink chan<- *ContractISlasherSlashingAbilityRevoked, operator []common.Address, contractAddress []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var contractAddressRule []interface{} - for _, contractAddressItem := range contractAddress { - contractAddressRule = append(contractAddressRule, contractAddressItem) - } - - logs, sub, err := _ContractISlasher.contract.WatchLogs(opts, "SlashingAbilityRevoked", operatorRule, contractAddressRule) - 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(ContractISlasherSlashingAbilityRevoked) - if err := _ContractISlasher.contract.UnpackLog(event, "SlashingAbilityRevoked", 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 -} - -// ParseSlashingAbilityRevoked is a log parse operation binding the contract event 0x9aa1b1391f35c672ed1f3b7ece632f4513e618366bef7a2f67b7c6bc1f2d2b14. -// -// Solidity: event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock) -func (_ContractISlasher *ContractISlasherFilterer) ParseSlashingAbilityRevoked(log types.Log) (*ContractISlasherSlashingAbilityRevoked, error) { - event := new(ContractISlasherSlashingAbilityRevoked) - if err := _ContractISlasher.contract.UnpackLog(event, "SlashingAbilityRevoked", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/contracts/bindings/IStrategy/binding.go b/contracts/bindings/IStrategy/binding.go index f58d2f3c..e9a51a00 100644 --- a/contracts/bindings/IStrategy/binding.go +++ b/contracts/bindings/IStrategy/binding.go @@ -31,7 +31,7 @@ var ( // ContractIStrategyMetaData contains all meta data concerning the ContractIStrategy contract. var ContractIStrategyMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"shares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlying\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToShares\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"underlyingToSharesView\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userUnderlying\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userUnderlyingView\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"shares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlying\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToShares\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"underlyingToSharesView\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userUnderlying\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userUnderlyingView\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", } // ContractIStrategyABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/StrategyManager/binding.go b/contracts/bindings/StrategyManager/binding.go index ac25c679..0082912a 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\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"shares\",\"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\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"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\":\"stakerStrategyShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"thirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"event\",\"name\":\"UpdatedThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea2646970667358221220e1eb2321685fb63a9aec2a407059955dbb014f9ba1598fed273d59a1889501d764736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"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\":[],\"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\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"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\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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: "0x60e060405234801561001057600080fd5b5060405161280338038061280383398101604081905261002f916101c2565b6001600160a01b0381166080524660a052610048610059565b60c052610053610103565b506101f2565b600060a05146146100fc5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b5060c05190565b600054610100900460ff161561016f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101c0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156101d457600080fd5b81516001600160a01b03811681146101eb57600080fd5b9392505050565b60805160a05160c0516125c661023d6000396000611960015260006118a00152600081816104560152818161068e01528181610a3401528181610ddf01526116fe01526125c66000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063cf756fdf116100a2578063f2fde38b11610071578063f2fde38b1461048b578063f698da251461049e578063fabc1cbc146104a6578063fe243a17146104b957600080fd5b8063cf756fdf1461041e578063de44acb614610431578063df5cf72314610451578063e7a050aa1461047857600080fd5b8063b5d8b5b8116100de578063b5d8b5b8146103d2578063c4623ea1146103e5578063c6656702146103f8578063cbc2bd621461040b57600080fd5b80638da5cb5b1461037a57806394f649dd1461038b578063967fc0d2146103ac5780639ac01d61146103bf57600080fd5b80635c975abb11610187578063724af42311610156578063724af423146102f35780637ecebe0014610306578063886f1195146103265780638b8aac3c1461035157600080fd5b80635c975abb146102ad5780635de08ff2146102b5578063663c1de4146102c8578063715018a6146102eb57600080fd5b806332e89ace116101c357806332e89ace1461022557806348825e941461024b578063595c6a67146102725780635ac86ab71461027a57600080fd5b806310d67a2f146101ea578063136439dd146101ff5780632eae418c14610212575b600080fd5b6101fd6101f8366004612025565b6104e4565b005b6101fd61020d366004612042565b610598565b6101fd61022036600461205b565b610683565b6102386102333660046120c2565b61073c565b6040519081526020015b60405180910390f35b6102387f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b6101fd610803565b61029d6102883660046121c5565b609854600160ff9092169190911b9081161490565b6040519015158152602001610242565b609854610238565b6101fd6102c33660046121e8565b6108cb565b61029d6102d6366004612025565b60d16020526000908152604090205460ff1681565b6101fd610a15565b6101fd61030136600461225f565b610a29565b610238610314366004612025565b60ca6020526000908152604090205481565b609754610339906001600160a01b031681565b6040516001600160a01b039091168152602001610242565b61023861035f366004612025565b6001600160a01b0316600090815260ce602052604090205490565b6033546001600160a01b0316610339565b61039e610399366004612025565b610a7d565b6040516102429291906122e5565b60cb54610339906001600160a01b031681565b6102386103cd36600461233f565b610bfd565b6101fd6103e03660046121e8565b610c8f565b6101fd6103f336600461205b565b610dd4565b6101fd610406366004612025565b610e29565b6103396104193660046123a4565b610e3a565b6101fd61042c36600461205b565b610e72565b61044461043f366004612025565b610fa1565b60405161024291906123d0565b6103397f000000000000000000000000000000000000000000000000000000000000000081565b61023861048636600461225f565b611017565b6101fd610499366004612025565b61106a565b6102386110e0565b6101fd6104b4366004612042565b6110ef565b6102386104c73660046123e3565b60cd60209081526000928352604080842090915290825290205481565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055b919061241c565b6001600160a01b0316336001600160a01b03161461058c5760405163794821ff60e01b815260040160405180910390fd5b610595816111f7565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106049190612439565b61062157604051631d77d47760e21b815260040160405180910390fd5b609854818116146106455760405163c61dca5d60e01b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106cc5760405163f739589b60e01b815260040160405180910390fd5b604051636ce5768960e11b81526001600160a01b03858116600483015283811660248301526044820183905284169063d9caed1290606401600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b5050505050505050565b60985460009081906001908116036107675760405163840a48d560e01b815260040160405180910390fd5b61076f611287565b4284101561079057604051630819bdcd60e01b815260040160405180910390fd5b6001600160a01b038516600090815260ca60205260409020546107c1866107bb818c8c8c878c610bfd565b866112e0565b6001600160a01b038616600090815260ca602052604090206001820190556107eb868a8a8a611316565b9250506107f86001606555565b509695505050505050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190612439565b61088c57604051631d77d47760e21b815260040160405180910390fd5b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60cb546001600160a01b031633146108f6576040516320ba3ff960e21b815260040160405180910390fd5b8060005b81811015610a0f5760d160008585848181106109185761091861245b565b905060200201602081019061092d9190612025565b6001600160a01b0316815260208101919091526040016000205460ff16610a0757600160d160008686858181106109665761096661245b565b905060200201602081019061097b9190612025565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8484838181106109d6576109d661245b565b90506020020160208101906109eb9190612025565b6040516001600160a01b03909116815260200160405180910390a15b6001016108fa565b50505050565b610a1d6113f0565b610a27600061144a565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a725760405163f739589b60e01b815260040160405180910390fd5b610a0f83838361149c565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610ab557610ab56120ac565b604051908082528060200260200182016040528015610ade578160200160208202803683370190505b50905060005b82811015610b6f576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610b2357610b2361245b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610b5c57610b5c61245b565b6020908102919091010152600101610ae4565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610beb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bcd575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e08101829052600090610c84906101000160405160208183030381529060405280519060200120611565565b979650505050505050565b60cb546001600160a01b03163314610cba576040516320ba3ff960e21b815260040160405180910390fd5b8060005b81811015610a0f5760d16000858584818110610cdc57610cdc61245b565b9050602002016020810190610cf19190612025565b6001600160a01b0316815260208101919091526040016000205460ff1615610dcc57600060d16000868685818110610d2b57610d2b61245b565b9050602002016020810190610d409190612025565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610d9b57610d9b61245b565b9050602002016020810190610db09190612025565b6040516001600160a01b03909116815260200160405180910390a15b600101610cbe565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e1d5760405163f739589b60e01b815260040160405180910390fd5b610a0f848385846115ac565b610e316113f0565b610595816117ae565b60ce6020528160005260406000208181548110610e5657600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff1615808015610e925750600054600160ff909116105b80610eac5750303b158015610eac575060005460ff166001145b610f145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610f37576000805461ff0019166101001790555b610f418383611817565b610f4a8561144a565b610f53846117ae565b8015610f9a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050505050565b6001600160a01b038116600090815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561100b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fed575b50505050509050919050565b60985460009081906001908116036110425760405163840a48d560e01b815260040160405180910390fd5b61104a611287565b61105633868686611316565b91506110626001606555565b509392505050565b6110726113f0565b6001600160a01b0381166110d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f0b565b6105958161144a565b60006110ea61189c565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611142573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611166919061241c565b6001600160a01b0316336001600160a01b0316146111975760405163794821ff60e01b815260040160405180910390fd5b6098541981196098541916146111c05760405163c61dca5d60e01b815260040160405180910390fd5b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610678565b6001600160a01b03811661121e576040516339b190bb60e11b815260040160405180910390fd5b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036112d95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f0b565b6002606555565b6112f46001600160a01b0384168383611982565b61131157604051638baa579f60e01b815260040160405180910390fd5b505050565b6001600160a01b038316600090815260d16020526040812054849060ff1661135157604051632efd965160e11b815260040160405180910390fd5b6113666001600160a01b0385163387866119e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af11580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d99190612471565b91506113e7868587856115ac565b50949350505050565b6033546001600160a01b03163314610a275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f0b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000816000036114bf576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808516600090815260cd60209081526040808320938716835292905220548083111561150657604051634b18b19360e01b815260040160405180910390fd5b61151083826124a0565b6001600160a01b03808716600090815260cd6020908152604080832093891683529290529081208290559091508190036115585761154e8585611a3d565b600191505061155e565b60009150505b9392505050565b600061156f61189c565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6001600160a01b0384166115d3576040516316f2ccc960e01b815260040160405180910390fd5b806000036115f4576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549081900361169d576001600160a01b038516600090815260ce60209081526040909120541061165e576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b03858116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169185169190911790555b6116a782826124b9565b6001600160a01b03868116600081815260cd602090815260408083208986168085529252918290209490945551631e328e7960e11b81526004810191909152602481019290925260448201839052606482018490527f00000000000000000000000000000000000000000000000000000000000000001690633c651cf290608401600060405180830381600087803b15801561174257600080fd5b505af1158015611756573d6000803e3d6000fd5b5050604080516001600160a01b03808a1682528089166020830152871691810191909152606081018590527f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a9692506080019050610f91565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6097546001600160a01b031615801561183857506001600160a01b03821615155b611855576040516339b190bb60e11b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611898826111f7565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461195d5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60008060006119918585611bc6565b909250905060008160048111156119aa576119aa6124cc565b1480156119c85750856001600160a01b0316826001600160a01b0316145b806119d957506119d9868686611c0b565b9695505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a0f908590611cf7565b6001600160a01b038216600090815260ce6020526040812054905b81811015611b57576001600160a01b03848116600090815260ce6020526040902080549185169183908110611a8f57611a8f61245b565b6000918252602090912001546001600160a01b031603611b4f576001600160a01b038416600090815260ce602052604090208054611acf906001906124a0565b81548110611adf57611adf61245b565b60009182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611b1c57611b1c61245b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611b57565b600101611a58565b818103611b7757604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b038416600090815260ce60205260409020805480611b9e57611b9e6124e2565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604103611bfc5760208301516040840151606085015160001a611bf087828585611dcc565b94509450505050611c04565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401611c35929190612548565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c739190612561565b600060405180830381855afa9150503d8060008114611cae576040519150601f19603f3d011682016040523d82523d6000602084013e611cb3565b606091505b5091509150818015611cc757506020815110155b80156119d957508051630b135d3f60e11b90611cec9083016020908101908401612471565b149695505050505050565b6000611d4c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e909092919063ffffffff16565b9050805160001480611d6d575080806020019051810190611d6d9190612439565b6113115760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610f0b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e035750600090506003611e87565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e57573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e8057600060019250925050611e87565b9150600090505b94509492505050565b6060611e9f8484600085611ea7565b949350505050565b606082471015611f085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610f0b565b600080866001600160a01b03168587604051611f249190612561565b60006040518083038185875af1925050503d8060008114611f61576040519150601f19603f3d011682016040523d82523d6000602084013e611f66565b606091505b5091509150610c848783838760608315611fe1578251600003611fda576001600160a01b0385163b611fda5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610f0b565b5081611e9f565b611e9f8383815115611ff65781518083602001fd5b8060405162461bcd60e51b8152600401610f0b919061257d565b6001600160a01b038116811461059557600080fd5b60006020828403121561203757600080fd5b813561155e81612010565b60006020828403121561205457600080fd5b5035919050565b6000806000806080858703121561207157600080fd5b843561207c81612010565b9350602085013561208c81612010565b9250604085013561209c81612010565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156120db57600080fd5b86356120e681612010565b955060208701356120f681612010565b945060408701359350606087013561210d81612010565b92506080870135915060a087013567ffffffffffffffff81111561213057600080fd5b8701601f8101891361214157600080fd5b803567ffffffffffffffff81111561215b5761215b6120ac565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561218a5761218a6120ac565b6040528181528282016020018b10156121a257600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b6000602082840312156121d757600080fd5b813560ff8116811461155e57600080fd5b600080602083850312156121fb57600080fd5b823567ffffffffffffffff81111561221257600080fd5b8301601f8101851361222357600080fd5b803567ffffffffffffffff81111561223a57600080fd5b8560208260051b840101111561224f57600080fd5b6020919091019590945092505050565b60008060006060848603121561227457600080fd5b833561227f81612010565b9250602084013561228f81612010565b929592945050506040919091013590565b600081518084526020840193506020830160005b828110156122db5781516001600160a01b03168652602095860195909101906001016122b4565b5093949350505050565b6040815260006122f860408301856122a0565b828103602084015280845180835260208301915060208601925060005b81811015612333578351835260209384019390920191600101612315565b50909695505050505050565b60008060008060008060c0878903121561235857600080fd5b863561236381612010565b9550602087013561237381612010565b9450604087013561238381612010565b959894975094956060810135955060808101359460a0909101359350915050565b600080604083850312156123b757600080fd5b82356123c281612010565b946020939093013593505050565b60208152600061155e60208301846122a0565b600080604083850312156123f657600080fd5b823561240181612010565b9150602083013561241181612010565b809150509250929050565b60006020828403121561242e57600080fd5b815161155e81612010565b60006020828403121561244b57600080fd5b8151801515811461155e57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156124b3576124b361248a565b92915050565b808201808211156124b3576124b361248a565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60005b838110156125135781810151838201526020016124fb565b50506000910152565b600081518084526125348160208601602086016124f8565b601f01601f19169290920160200192915050565b828152604060208201526000611e9f604083018461251c565b600082516125738184602087016124f8565b9190910192915050565b60208152600061155e602083018461251c56fea26469706673582212208d32538e1235c208ee89d61b81927671163d5533cc1a8230de40c009d2fec08264736f6c634300081b0033", } // ContractStrategyManagerABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ContractStrategyManagerABI = ContractStrategyManagerMetaData.ABI var ContractStrategyManagerBin = ContractStrategyManagerMetaData.Bin // DeployContractStrategyManager deploys a new Ethereum contract, binding an instance of ContractStrategyManager to it. -func DeployContractStrategyManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _eigenPodManager common.Address, _slasher common.Address) (common.Address, *types.Transaction, *ContractStrategyManager, error) { +func DeployContractStrategyManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address) (common.Address, *types.Transaction, *ContractStrategyManager, error) { parsed, err := ContractStrategyManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployContractStrategyManager(auth *bind.TransactOpts, backend bind.Contrac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractStrategyManagerBin), backend, _delegation, _eigenPodManager, _slasher) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractStrategyManagerBin), backend, _delegation) if err != nil { return common.Address{}, nil, nil, err } @@ -71,16 +71,16 @@ type ContractStrategyManagerMethods interface { type ContractStrategyManagerCalls interface { DEPOSITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) - DOMAINTYPEHASH(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) Delegation(opts *bind.CallOpts) (common.Address, error) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) - EigenPodManager(opts *bind.CallOpts) (common.Address, error) - GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) + GetStakerStrategyList(opts *bind.CallOpts, staker common.Address) ([]common.Address, error) + Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) Owner(opts *bind.CallOpts) (common.Address, error) @@ -91,26 +91,22 @@ type ContractStrategyManagerCalls interface { PauserRegistry(opts *bind.CallOpts) (common.Address, error) - Slasher(opts *bind.CallOpts) (common.Address, error) + StakerDepositShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) StakerStrategyList(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (common.Address, error) StakerStrategyListLength(opts *bind.CallOpts, staker common.Address) (*big.Int, error) - StakerStrategyShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) - StrategyIsWhitelistedForDeposit(opts *bind.CallOpts, arg0 common.Address) (bool, error) StrategyWhitelister(opts *bind.CallOpts) (common.Address, error) - - ThirdPartyTransfersForbidden(opts *bind.CallOpts, arg0 common.Address) (bool, error) } // ContractStrategyManagerTransacts is an auto generated interface that defines the transact methods available for an Ethereum contract. type ContractStrategyManagerTransacts interface { - AddShares(opts *bind.TransactOpts, staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) + AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) - AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) + AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) @@ -122,7 +118,7 @@ type ContractStrategyManagerTransacts interface { PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) - RemoveShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) + RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) RemoveStrategiesFromDepositWhitelist(opts *bind.TransactOpts, strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) @@ -132,13 +128,11 @@ type ContractStrategyManagerTransacts interface { SetStrategyWhitelister(opts *bind.TransactOpts, newStrategyWhitelister common.Address) (*types.Transaction, error) - SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) - TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) - WithdrawSharesAsTokens(opts *bind.TransactOpts, recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) + WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) } // ContractStrategyManagerFilterer is an auto generated interface that defines the log filtering methods available for an Ethereum contract. @@ -178,10 +172,6 @@ type ContractStrategyManagerFilters interface { FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*ContractStrategyManagerUnpausedIterator, error) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ContractStrategyManagerUnpaused, account []common.Address) (event.Subscription, error) ParseUnpaused(log types.Log) (*ContractStrategyManagerUnpaused, error) - - FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator, error) - WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *ContractStrategyManagerUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) - ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*ContractStrategyManagerUpdatedThirdPartyTransfersForbidden, error) } // ContractStrategyManager is an auto generated Go binding around an Ethereum contract. @@ -369,12 +359,12 @@ func (_ContractStrategyManager *ContractStrategyManagerCallerSession) DEPOSITTYP return _ContractStrategyManager.Contract.DEPOSITTYPEHASH(&_ContractStrategyManager.CallOpts) } -// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// CalculateStrategyDepositDigestHash is a free data retrieval call binding the contract method 0x9ac01d61. // -// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) -func (_ContractStrategyManager *ContractStrategyManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32) +func (_ContractStrategyManager *ContractStrategyManagerCaller) 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) { var out []interface{} - err := _ContractStrategyManager.contract.Call(opts, &out, "DOMAIN_TYPEHASH") + err := _ContractStrategyManager.contract.Call(opts, &out, "calculateStrategyDepositDigestHash", staker, strategy, token, amount, nonce, expiry) if err != nil { return *new([32]byte), err @@ -386,18 +376,18 @@ func (_ContractStrategyManager *ContractStrategyManagerCaller) DOMAINTYPEHASH(op } -// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// CalculateStrategyDepositDigestHash is a free data retrieval call binding the contract method 0x9ac01d61. // -// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) -func (_ContractStrategyManager *ContractStrategyManagerSession) DOMAINTYPEHASH() ([32]byte, error) { - return _ContractStrategyManager.Contract.DOMAINTYPEHASH(&_ContractStrategyManager.CallOpts) +// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32) +func (_ContractStrategyManager *ContractStrategyManagerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) { + return _ContractStrategyManager.Contract.CalculateStrategyDepositDigestHash(&_ContractStrategyManager.CallOpts, staker, strategy, token, amount, nonce, expiry) } -// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// CalculateStrategyDepositDigestHash is a free data retrieval call binding the contract method 0x9ac01d61. // -// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) -func (_ContractStrategyManager *ContractStrategyManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) { - return _ContractStrategyManager.Contract.DOMAINTYPEHASH(&_ContractStrategyManager.CallOpts) +// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32) +func (_ContractStrategyManager *ContractStrategyManagerCallerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) { + return _ContractStrategyManager.Contract.CalculateStrategyDepositDigestHash(&_ContractStrategyManager.CallOpts, staker, strategy, token, amount, nonce, expiry) } // Delegation is a free data retrieval call binding the contract method 0xdf5cf723. @@ -462,67 +452,67 @@ func (_ContractStrategyManager *ContractStrategyManagerCallerSession) DomainSepa return _ContractStrategyManager.Contract.DomainSeparator(&_ContractStrategyManager.CallOpts) } -// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. // -// Solidity: function eigenPodManager() view returns(address) -func (_ContractStrategyManager *ContractStrategyManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_ContractStrategyManager *ContractStrategyManagerCaller) GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { var out []interface{} - err := _ContractStrategyManager.contract.Call(opts, &out, "eigenPodManager") + err := _ContractStrategyManager.contract.Call(opts, &out, "getDeposits", staker) if err != nil { - return *new(common.Address), err + return *new([]common.Address), *new([]*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) - return out0, err + return out0, out1, err } -// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. // -// Solidity: function eigenPodManager() view returns(address) -func (_ContractStrategyManager *ContractStrategyManagerSession) EigenPodManager() (common.Address, error) { - return _ContractStrategyManager.Contract.EigenPodManager(&_ContractStrategyManager.CallOpts) +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_ContractStrategyManager *ContractStrategyManagerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { + return _ContractStrategyManager.Contract.GetDeposits(&_ContractStrategyManager.CallOpts, staker) } -// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. // -// Solidity: function eigenPodManager() view returns(address) -func (_ContractStrategyManager *ContractStrategyManagerCallerSession) EigenPodManager() (common.Address, error) { - return _ContractStrategyManager.Contract.EigenPodManager(&_ContractStrategyManager.CallOpts) +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_ContractStrategyManager *ContractStrategyManagerCallerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { + return _ContractStrategyManager.Contract.GetDeposits(&_ContractStrategyManager.CallOpts, staker) } -// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6. // -// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) -func (_ContractStrategyManager *ContractStrategyManagerCaller) GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { +// Solidity: function getStakerStrategyList(address staker) view returns(address[]) +func (_ContractStrategyManager *ContractStrategyManagerCaller) GetStakerStrategyList(opts *bind.CallOpts, staker common.Address) ([]common.Address, error) { var out []interface{} - err := _ContractStrategyManager.contract.Call(opts, &out, "getDeposits", staker) + err := _ContractStrategyManager.contract.Call(opts, &out, "getStakerStrategyList", staker) if err != nil { - return *new([]common.Address), *new([]*big.Int), err + return *new([]common.Address), err } out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) - return out0, out1, err + return out0, err } -// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6. // -// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) -func (_ContractStrategyManager *ContractStrategyManagerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { - return _ContractStrategyManager.Contract.GetDeposits(&_ContractStrategyManager.CallOpts, staker) +// Solidity: function getStakerStrategyList(address staker) view returns(address[]) +func (_ContractStrategyManager *ContractStrategyManagerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) { + return _ContractStrategyManager.Contract.GetStakerStrategyList(&_ContractStrategyManager.CallOpts, staker) } -// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6. // -// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) -func (_ContractStrategyManager *ContractStrategyManagerCallerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { - return _ContractStrategyManager.Contract.GetDeposits(&_ContractStrategyManager.CallOpts, staker) +// Solidity: function getStakerStrategyList(address staker) view returns(address[]) +func (_ContractStrategyManager *ContractStrategyManagerCallerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) { + return _ContractStrategyManager.Contract.GetStakerStrategyList(&_ContractStrategyManager.CallOpts, staker) } // Nonces is a free data retrieval call binding the contract method 0x7ecebe00. @@ -680,35 +670,35 @@ func (_ContractStrategyManager *ContractStrategyManagerCallerSession) PauserRegi return _ContractStrategyManager.Contract.PauserRegistry(&_ContractStrategyManager.CallOpts) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17. // -// Solidity: function slasher() view returns(address) -func (_ContractStrategyManager *ContractStrategyManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function stakerDepositShares(address , address ) view returns(uint256) +func (_ContractStrategyManager *ContractStrategyManagerCaller) StakerDepositShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { var out []interface{} - err := _ContractStrategyManager.contract.Call(opts, &out, "slasher") + err := _ContractStrategyManager.contract.Call(opts, &out, "stakerDepositShares", arg0, arg1) if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17. // -// Solidity: function slasher() view returns(address) -func (_ContractStrategyManager *ContractStrategyManagerSession) Slasher() (common.Address, error) { - return _ContractStrategyManager.Contract.Slasher(&_ContractStrategyManager.CallOpts) +// Solidity: function stakerDepositShares(address , address ) view returns(uint256) +func (_ContractStrategyManager *ContractStrategyManagerSession) StakerDepositShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _ContractStrategyManager.Contract.StakerDepositShares(&_ContractStrategyManager.CallOpts, arg0, arg1) } -// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17. // -// Solidity: function slasher() view returns(address) -func (_ContractStrategyManager *ContractStrategyManagerCallerSession) Slasher() (common.Address, error) { - return _ContractStrategyManager.Contract.Slasher(&_ContractStrategyManager.CallOpts) +// Solidity: function stakerDepositShares(address , address ) view returns(uint256) +func (_ContractStrategyManager *ContractStrategyManagerCallerSession) StakerDepositShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _ContractStrategyManager.Contract.StakerDepositShares(&_ContractStrategyManager.CallOpts, arg0, arg1) } // StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62. @@ -773,37 +763,6 @@ func (_ContractStrategyManager *ContractStrategyManagerCallerSession) StakerStra return _ContractStrategyManager.Contract.StakerStrategyListLength(&_ContractStrategyManager.CallOpts, staker) } -// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92. -// -// Solidity: function stakerStrategyShares(address , address ) view returns(uint256) -func (_ContractStrategyManager *ContractStrategyManagerCaller) StakerStrategyShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { - var out []interface{} - err := _ContractStrategyManager.contract.Call(opts, &out, "stakerStrategyShares", arg0, arg1) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92. -// -// Solidity: function stakerStrategyShares(address , address ) view returns(uint256) -func (_ContractStrategyManager *ContractStrategyManagerSession) StakerStrategyShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _ContractStrategyManager.Contract.StakerStrategyShares(&_ContractStrategyManager.CallOpts, arg0, arg1) -} - -// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92. -// -// Solidity: function stakerStrategyShares(address , address ) view returns(uint256) -func (_ContractStrategyManager *ContractStrategyManagerCallerSession) StakerStrategyShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _ContractStrategyManager.Contract.StakerStrategyShares(&_ContractStrategyManager.CallOpts, arg0, arg1) -} - // StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4. // // Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool) @@ -866,117 +825,86 @@ func (_ContractStrategyManager *ContractStrategyManagerCallerSession) StrategyWh return _ContractStrategyManager.Contract.StrategyWhitelister(&_ContractStrategyManager.CallOpts) } -// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. -// -// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) -func (_ContractStrategyManager *ContractStrategyManagerCaller) ThirdPartyTransfersForbidden(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _ContractStrategyManager.contract.Call(opts, &out, "thirdPartyTransfersForbidden", arg0) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. -// -// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) -func (_ContractStrategyManager *ContractStrategyManagerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) { - return _ContractStrategyManager.Contract.ThirdPartyTransfersForbidden(&_ContractStrategyManager.CallOpts, arg0) -} - -// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. -// -// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) -func (_ContractStrategyManager *ContractStrategyManagerCallerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) { - return _ContractStrategyManager.Contract.ThirdPartyTransfersForbidden(&_ContractStrategyManager.CallOpts, arg0) -} - // AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. // -// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractStrategyManager.contract.Transact(opts, "addShares", staker, token, strategy, shares) +// Solidity: function addShares(address staker, address strategy, address token, uint256 shares) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.contract.Transact(opts, "addShares", staker, strategy, token, shares) } // AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. // -// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns() -func (_ContractStrategyManager *ContractStrategyManagerSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.AddShares(&_ContractStrategyManager.TransactOpts, staker, token, strategy, shares) +// Solidity: function addShares(address staker, address strategy, address token, uint256 shares) returns() +func (_ContractStrategyManager *ContractStrategyManagerSession) AddShares(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.AddShares(&_ContractStrategyManager.TransactOpts, staker, strategy, token, shares) } // AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. // -// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.AddShares(&_ContractStrategyManager.TransactOpts, staker, token, strategy, shares) +// Solidity: function addShares(address staker, address strategy, address token, uint256 shares) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.AddShares(&_ContractStrategyManager.TransactOpts, staker, strategy, token, shares) } -// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2. // -// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) { - return _ContractStrategyManager.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist, thirdPartyTransfersForbiddenValues) +// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) { + return _ContractStrategyManager.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist) } -// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2. // -// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns() -func (_ContractStrategyManager *ContractStrategyManagerSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_ContractStrategyManager.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues) +// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns() +func (_ContractStrategyManager *ContractStrategyManagerSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_ContractStrategyManager.TransactOpts, strategiesToWhitelist) } -// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2. // -// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_ContractStrategyManager.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues) +// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_ContractStrategyManager.TransactOpts, strategiesToWhitelist) } // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // -// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 shares) +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) func (_ContractStrategyManager *ContractStrategyManagerTransactor) DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) { return _ContractStrategyManager.contract.Transact(opts, "depositIntoStrategy", strategy, token, amount) } // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // -// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 shares) +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) func (_ContractStrategyManager *ContractStrategyManagerSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategy(&_ContractStrategyManager.TransactOpts, strategy, token, amount) } // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // -// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 shares) +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategy(&_ContractStrategyManager.TransactOpts, strategy, token, amount) } // DepositIntoStrategyWithSignature is a paid mutator transaction binding the contract method 0x32e89ace. // -// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 shares) +// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositedShares) func (_ContractStrategyManager *ContractStrategyManagerTransactor) DepositIntoStrategyWithSignature(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) { return _ContractStrategyManager.contract.Transact(opts, "depositIntoStrategyWithSignature", strategy, token, amount, staker, expiry, signature) } // DepositIntoStrategyWithSignature is a paid mutator transaction binding the contract method 0x32e89ace. // -// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 shares) +// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositedShares) func (_ContractStrategyManager *ContractStrategyManagerSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategyWithSignature(&_ContractStrategyManager.TransactOpts, strategy, token, amount, staker, expiry, signature) } // DepositIntoStrategyWithSignature is a paid mutator transaction binding the contract method 0x32e89ace. // -// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 shares) +// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositedShares) func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategyWithSignature(&_ContractStrategyManager.TransactOpts, strategy, token, amount, staker, expiry, signature) } @@ -1044,25 +972,25 @@ func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) PauseA return _ContractStrategyManager.Contract.PauseAll(&_ContractStrategyManager.TransactOpts) } -// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. // -// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactor) RemoveShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractStrategyManager.contract.Transact(opts, "removeShares", staker, strategy, shares) +// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.contract.Transact(opts, "removeDepositShares", staker, strategy, depositSharesToRemove) } -// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. // -// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns() -func (_ContractStrategyManager *ContractStrategyManagerSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.RemoveShares(&_ContractStrategyManager.TransactOpts, staker, strategy, shares) +// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns() +func (_ContractStrategyManager *ContractStrategyManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.RemoveDepositShares(&_ContractStrategyManager.TransactOpts, staker, strategy, depositSharesToRemove) } -// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423. // -// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.RemoveShares(&_ContractStrategyManager.TransactOpts, staker, strategy, shares) +// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.RemoveDepositShares(&_ContractStrategyManager.TransactOpts, staker, strategy, depositSharesToRemove) } // RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. @@ -1149,27 +1077,6 @@ func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) SetStr return _ContractStrategyManager.Contract.SetStrategyWhitelister(&_ContractStrategyManager.TransactOpts, newStrategyWhitelister) } -// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263. -// -// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) { - return _ContractStrategyManager.contract.Transact(opts, "setThirdPartyTransfersForbidden", strategy, value) -} - -// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263. -// -// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns() -func (_ContractStrategyManager *ContractStrategyManagerSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.SetThirdPartyTransfersForbidden(&_ContractStrategyManager.TransactOpts, strategy, value) -} - -// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263. -// -// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.SetThirdPartyTransfersForbidden(&_ContractStrategyManager.TransactOpts, strategy, value) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -1212,25 +1119,25 @@ func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) Unpaus return _ContractStrategyManager.Contract.Unpause(&_ContractStrategyManager.TransactOpts, newPausedStatus) } -// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c. // -// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) { - return _ContractStrategyManager.contract.Transact(opts, "withdrawSharesAsTokens", recipient, strategy, shares, token) +// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, shares) } -// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c. // -// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns() -func (_ContractStrategyManager *ContractStrategyManagerSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.WithdrawSharesAsTokens(&_ContractStrategyManager.TransactOpts, recipient, strategy, shares, token) +// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns() +func (_ContractStrategyManager *ContractStrategyManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.WithdrawSharesAsTokens(&_ContractStrategyManager.TransactOpts, staker, strategy, token, shares) } -// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c. // -// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns() -func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) { - return _ContractStrategyManager.Contract.WithdrawSharesAsTokens(&_ContractStrategyManager.TransactOpts, recipient, strategy, shares, token) +// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns() +func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) { + return _ContractStrategyManager.Contract.WithdrawSharesAsTokens(&_ContractStrategyManager.TransactOpts, staker, strategy, token, shares) } // ContractStrategyManagerDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ContractStrategyManager contract. @@ -2484,138 +2391,3 @@ func (_ContractStrategyManager *ContractStrategyManagerFilterer) ParseUnpaused(l event.Raw = log return event, nil } - -// ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator is returned from FilterUpdatedThirdPartyTransfersForbidden and is used to iterate over the raw logs and unpacked data for UpdatedThirdPartyTransfersForbidden events raised by the ContractStrategyManager contract. -type ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator struct { - Event *ContractStrategyManagerUpdatedThirdPartyTransfersForbidden // 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 *ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) 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(ContractStrategyManagerUpdatedThirdPartyTransfersForbidden) - 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(ContractStrategyManagerUpdatedThirdPartyTransfersForbidden) - 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 *ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContractStrategyManagerUpdatedThirdPartyTransfersForbidden represents a UpdatedThirdPartyTransfersForbidden event raised by the ContractStrategyManager contract. -type ContractStrategyManagerUpdatedThirdPartyTransfersForbidden struct { - Strategy common.Address - Value bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedThirdPartyTransfersForbidden is a free log retrieval operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786. -// -// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value) -func (_ContractStrategyManager *ContractStrategyManagerFilterer) FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator, error) { - - logs, sub, err := _ContractStrategyManager.contract.FilterLogs(opts, "UpdatedThirdPartyTransfersForbidden") - if err != nil { - return nil, err - } - return &ContractStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator{contract: _ContractStrategyManager.contract, event: "UpdatedThirdPartyTransfersForbidden", logs: logs, sub: sub}, nil -} - -// WatchUpdatedThirdPartyTransfersForbidden is a free log subscription operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786. -// -// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value) -func (_ContractStrategyManager *ContractStrategyManagerFilterer) WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *ContractStrategyManagerUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) { - - logs, sub, err := _ContractStrategyManager.contract.WatchLogs(opts, "UpdatedThirdPartyTransfersForbidden") - 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(ContractStrategyManagerUpdatedThirdPartyTransfersForbidden) - if err := _ContractStrategyManager.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", 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 -} - -// ParseUpdatedThirdPartyTransfersForbidden is a log parse operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786. -// -// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value) -func (_ContractStrategyManager *ContractStrategyManagerFilterer) ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*ContractStrategyManagerUpdatedThirdPartyTransfersForbidden, error) { - event := new(ContractStrategyManagerUpdatedThirdPartyTransfersForbidden) - if err := _ContractStrategyManager.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/contracts/generate-bindings.sh b/contracts/generate-bindings.sh index 4f5f8983..3813dcb6 100755 --- a/contracts/generate-bindings.sh +++ b/contracts/generate-bindings.sh @@ -41,7 +41,7 @@ pwd contracts=$2 bindings_path=$3 -forge build +forge build -C src/contracts echo "Generating bindings for contracts: $contracts" for contract in $contracts; do sleep 1 # this is a hack to fix the issue with abigen randomly failing for some contracts diff --git a/contracts/lib/eigenlayer-middleware b/contracts/lib/eigenlayer-middleware index 32148dee..31ceb07e 160000 --- a/contracts/lib/eigenlayer-middleware +++ b/contracts/lib/eigenlayer-middleware @@ -1 +1 @@ -Subproject commit 32148dee470cf8addfff85cbb34d73693bf1c04d +Subproject commit 31ceb07e66095b795fd9f7f05d063604257e340d diff --git a/go.mod b/go.mod index 7e996799..6a565339 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/google/uuid v1.6.0 github.com/lmittmann/tint v1.0.4 github.com/prometheus/client_golang v1.19.0 + github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.30.0 github.com/urfave/cli/v2 v2.27.1 @@ -33,7 +34,6 @@ require ( github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/moby/sys/user v0.1.0 // indirect - github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect @@ -105,7 +105,7 @@ require ( golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/sync v0.7.0 // indirect + golang.org/x/sync v0.7.0 golang.org/x/sys v0.19.0 // indirect golang.org/x/tools v0.20.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect diff --git a/types/operator.go b/types/operator.go index 174ac502..732bcd32 100644 --- a/types/operator.go +++ b/types/operator.go @@ -30,6 +30,10 @@ type Operator struct { // MetadataUrl URL where operator metadata is stored MetadataUrl string `yaml:"metadata_url" json:"metadata_url"` + + // AllocationDelay is the delay in seconds where an operator is allowed to change allocation + // This can only be set once by the operator. Once set this can't be changed + AllocationDelay uint32 `yaml:"allocation_delay" json:"allocation_delay"` } func (o Operator) Validate() error {